home *** CD-ROM | disk | FTP | other *** search
/ Die Ultimative Software-P…i Collection 1996 & 1997 / Die Ultimative Software-Pakete CD-ROM fur Atari Collection 1996 & 1997.iso / l / lernen / vokabel / vokus.gfa (.txt) < prev    next >
Encoding:
GFA-BASIC Atari  |  1996-11-17  |  57.5 KB  |  2,759 lines

  1. CLS
  2. SOUND 0
  3. '
  4. ' vokus v1.1
  5. ' written by Thorsten Liese
  6. '
  7. a$="symbols.pic"
  8. @degload(a$,*pic$,*pal$,*res%)
  9. IF res%<>XBIOS(4)
  10.   ALERT 3,"Bild hat falsche Auflösung !",1,"OKAY",back%
  11.   EDIT
  12. ELSE
  13.   VOID XBIOS(6,L:VARPTR(pal$))
  14.   SPUT pic$
  15.   GET 1,1,80,80,sym1$
  16.   GET 81,1,160,80,sym2$
  17.   GET 161,1,240,80,sym3$
  18.   GET 1,100,299,145,vokus$
  19.   GET 0,179,324,366,info$
  20.   CLS
  21. ENDIF
  22. '
  23. ' ** DIMENSIONIERUNGEN **
  24. '
  25. DIM menu$(61)
  26. DIM lin1$(1000,3)
  27. DIM lin2$(1000,3)
  28. DIM anm1$(1000)
  29. DIM anm2$(1000)
  30. DIM status#(1000)
  31. DIM us#(1000)
  32. DIM drin#(1000)
  33. DIM unregel$(160,3)
  34. '
  35. allerichtig%=1
  36. spei#=1
  37. grber%=1
  38. KEYPAD &X11100
  39. FOR i#=1 TO 1000
  40.   us#(i#)=1
  41. NEXT i#
  42. '
  43. ' ** BILDSCHIRMAUFBAU **
  44. '
  45. DEFFILL ,2,4
  46. PBOX 0,0,640,400
  47. GRAPHMODE 1
  48. PUT 200,54,vokus$
  49. DEFFILL ,0,0
  50. PBOX 30,40,180,70
  51. LINE 32,71,181,71
  52. LINE 181,42,181,71
  53. PRINT AT(6,4);"Nummer:"
  54. PBOX 30,88,180,118
  55. PBOX 30,118,610,195
  56. LINE 181,90,181,118
  57. LINE 32,196,611,196
  58. LINE 611,196,611,120
  59. PRINT AT(6,7);"Deutsch:"
  60. PRINT AT(6,9);"-"
  61. PRINT AT(6,10);"-"
  62. PRINT AT(6,11);"-"
  63. PRINT AT(68,12);"]";AT(6,12);"["
  64. PBOX 30,200,180,230
  65. PBOX 30,230,610,308
  66. LINE 181,202,181,230
  67. LINE 611,232,611,309
  68. LINE 32,309,611,309
  69. PRINT AT(6,14);"Fremdsprache:"
  70. PRINT AT(6,16);"-"
  71. PRINT AT(6,17);"-"
  72. PRINT AT(6,18);"-"
  73. PRINT AT(68,19);"]";AT(6,19);"["
  74. PBOX 519,29,601,111
  75. LINE 521,112,602,112
  76. LINE 602,31,602,112
  77. PBOX 30,313,250,343
  78. LINE 32,344,251,344
  79. LINE 251,344,251,315
  80. PRINT AT(6,21);"Fehler,gesamt:"
  81. PBOX 390,313,610,343
  82. LINE 392,344,611,344
  83. LINE 611,344,611,315
  84. PRINT AT(51,21);"Fehler,Vokabel:"
  85. PBOX 30,360,610,390
  86. LINE 32,391,611,391
  87. LINE 611,391,611,362
  88. '
  89. ' ** LADE MUSIK **
  90. '
  91. PRINT AT(6,24);"                *****   L A D E   M U S I K   *****"
  92. musik$=SPACE$(5120)
  93. musikadresse%=VARPTR(musik$)
  94. BLOAD "TITEL.MUS",musikadresse%
  95. PRINT AT(6,24);SPC(70)
  96. '
  97. ' ** LADE UNREGELM. VERBEN **
  98. '
  99. PRINT AT(6,24);"              *****  LADE UNREGELMÄSSIGE VERBEN *****"
  100. OPEN "U",#1,"VERBEN.DAT"
  101. FOR i#=1 TO 160
  102.   INPUT #1,unregel$(i#,1)
  103.   INPUT #1,unregel$(i#,2)
  104.   INPUT #1,unregel$(i#,3)
  105. NEXT i#
  106. CLOSE
  107. PRINT AT(6,24);SPC(70)
  108. '
  109. ' SUCHE F-TASTENTEXTE
  110. '
  111. PRINT AT(6,24);"          *****  SUCHE F-TASTENTEXTE...BITTE WARTEN  *****"
  112. a$="VOKUS "
  113. b$="VERSION 2_0"
  114. KEYDEF 1,a$+b$
  115. GOSUB find(1,a$,b$,BASEPAGE,999998,*back$)
  116. ftastenspeicher%=CVL(back$)-BASEPAGE
  117. PRINT AT(6,24);SPC(70)
  118. '
  119. ' LADE SETUP.FTA
  120. '
  121. PRINT AT(6,24);"                *****    LADE SETUP.FTA    *****"
  122. OPEN "U",#1,"SETUP.FTA"
  123. FOR i#=1 TO 20
  124.   INPUT #1,a$
  125.   KEYDEF i#,a$
  126. NEXT i#
  127. CLOSE
  128. PRINT AT(6,24);SPC(70)
  129. '
  130. ' ** MENU LESEN UND ZEICHNEN **
  131. '
  132. x#=-1
  133. REPEAT
  134.   x#=x#+1
  135.   READ menu$(x#)
  136. UNTIL menu$(x#)="ENDE"
  137. menu$(x#)=""
  138. MENU menu$()
  139. MENU 12,2
  140. MENU 13,2
  141. MENU 14,2
  142. MENU 23,2
  143. MENU 24,2
  144. MENU 29,2
  145. MENU 30,2
  146. MENU 34,2
  147. MENU 35,2
  148. MENU 36,2
  149. MENU 37,2
  150. MENU 38,2
  151. MENU 39,2
  152. MENU 43,2
  153. MENU 44,2
  154. MENU 45,1
  155. MENU 26,2
  156. MENU 27,2
  157. MENU 56,1
  158. '
  159. SGET hi$
  160. ~GRAF_GROWBOX(320,200,0,0,158,106,324,187)
  161. PUT 158,106,info$
  162. REPEAT
  163. UNTIL MOUSEX>423 AND MOUSEX<459 AND MOUSEY>227 AND MOUSEY<267 AND MOUSEK=1
  164. GRAPHMODE 3
  165. DEFFILL 1,1,1
  166. PBOX 423,226,460,267
  167. PAUSE 10
  168. GRAPHMODE 1
  169. ~GRAF_SHRINKBOX(320,200,0,0,158,106,324,187)
  170. SPUT hi$
  171. '
  172. lanaus%=1
  173. '
  174. ' ** MENU DATAS **
  175. '
  176. DATA Desk, Info        ,---------------------,- ,- ,- ,- ,- ,- ,""
  177. DATA Datei, Laden , Speichern , Speichern als , Löschen ,----------------, Quit ,""
  178. DATA Eingabe, -Vokabeln- ,""
  179. DATA Lernen,--------Vokabeln-------,  Vokabeln wählen  ,        ...listen  ,---------Lernen---------,  Deutsch-Fremdsprache ,  Fremdsprache-Deutsch ,--------Abfrage---------,  Deutsch-Fremdsprache  ,  Fremdsprache-Deutsch  ,- Hilfestellung  ,""
  180. DATA Vokabel, Goto Vokabel , löschen , ersetzen , editieren , alle listen , alle drucken , Übersetzung suchen ,""
  181. DATA Funktionen,  Auswertung,  Vokabelstatus,  Großschreibung,  Fremdsprache?,  Lektionsname?,  Funktionstastenbelegung  ,  Tastenbelegung laden,  Tastenbelegung speichern  ,  Einstellungen ,""
  182. DATA Extras,  Musik starten ,  Unregelmäßige Verben ,  Laufschrift ,  Sortieren ,""
  183. DATA "","ENDE"
  184. '
  185. ' ** MENU ÜBERWACHEN + LAUFSCHRIFT **
  186. '
  187. laufschrift$=SPACE$(72)+"*** VOKUS * Ein Vokabel-Lernprogramm von Thorsten Liese * Geschrieben in GfA-BASIC V3.00 D *"
  188. laufschrift$=laufschrift$+" 1990/91 V1.1 * Dieses Programm ist >>PUBLIC DOMAIN<< ! Es darf also beliebig kopiert und weitergegeben werden. * Für nur 10.- DM gibt's die neueste Version von VOKUS ! *** "
  189. DO
  190.   IF lanaus%=1
  191.     laufschrift#=laufschrift#+1
  192.     IF laufschrift#>LEN(laufschrift$)
  193.       laufschrift#=1
  194.     ENDIF
  195.     PRINT AT(6,24);MID$(laufschrift$,laufschrift#,70)
  196.     PAUSE 5
  197.   ENDIF
  198.   a$=INKEY$
  199.   REPEAT
  200.   UNTIL INKEY$=""
  201.   IF UPPER$(a$)="G" AND lins#>0
  202.     diain("Goto Vokabel Nr.:",4,back$)
  203.     IF VAL(back$)>0 AND VAL(back$)<lins#+1
  204.       akt#=VAL(back$)
  205.       clervok
  206.       showvok(3)
  207.     ENDIF
  208.   ENDIF
  209.   IF a$=CHR$(27)
  210.     SOUND 0
  211.     SPOKE &H484,PEEK(&H484) OR 1
  212.     musik#=0
  213.   ENDIF
  214.   IF PEEK(XBIOS(32,L:-1))=96 AND musik#=1
  215.     ~XBIOS(32,L:musikadresse%)
  216.   ENDIF
  217.   IF LEN(a$)=2 AND lins#>0
  218.     IF ASC(RIGHT$(a$))=77
  219.       akt#=akt#+1
  220.       IF akt#>lins#
  221.         akt#=lins#
  222.       ENDIF
  223.       clervok
  224.       showvok(3)
  225.     ENDIF
  226.     IF ASC(RIGHT$(a$))=75
  227.       akt#=akt#-1
  228.       IF akt#=0
  229.         akt#=1
  230.       ENDIF
  231.       clervok
  232.       showvok(3)
  233.     ENDIF
  234.     IF ASC(RIGHT$(a$))=72
  235.       akt#=lins#
  236.       clervok
  237.       showvok(3)
  238.     ENDIF
  239.     IF ASC(RIGHT$(a$))=80
  240.       akt#=1
  241.       clervok
  242.       showvok(3)
  243.     ENDIF
  244.   ENDIF
  245.   ON MENU
  246.   ON MENU GOSUB akk
  247. LOOP
  248. '
  249. PROCEDURE akk
  250.   IF MENU(5)=23
  251.     SGET hi$
  252.     ~GRAF_GROWBOX(320,200,0,0,158,106,324,187)
  253.     PUT 158,106,info$
  254.     REPEAT
  255.     UNTIL MOUSEX>423 AND MOUSEX<459 AND MOUSEY>227 AND MOUSEY<267 AND MOUSEK=1
  256.     GRAPHMODE 3
  257.     DEFFILL 1,1,1
  258.     PBOX 423,226,460,267
  259.     PAUSE 10
  260.     GRAPHMODE 1
  261.     ~GRAF_SHRINKBOX(320,200,0,0,158,106,324,187)
  262.     SPUT hi$
  263.   ENDIF
  264.   IF MENU(5)=32
  265.     IF lins#>0
  266.       ALERT 2,"Vokabeln im Speicher vorher|löschen ?",0,"Ja| Nein ",a%
  267.       IF a%=1 AND spei#=0
  268.         ALERT 1,"Achtung! Sie haben die|Vokabeln im Speicher|nicht gesichert!",1,"Egal|Abbruch",b%
  269.         IF b%=2
  270.           GOTO weg
  271.         ENDIF
  272.       ENDIF
  273.       IF a%=2
  274.         IF lins#=1000
  275.           ALERT 3,"Es können keine Vokabeln|mehr dazugeladen werden!",1,"Abbruch",dummy%
  276.           GOTO weg
  277.         ENDIF
  278.       ENDIF
  279.     ELSE
  280.       a%=1
  281.     ENDIF
  282.     FILESELECT "\*.VOK","",lad$
  283.     IF lad$<>"\" AND lad$<>""
  284.       IF EXIST(lad$)=0
  285.         ALERT 1,"Datei existiert nicht!",1,"Abbruch",dummy%
  286.         GOTO weg
  287.       ENDIF
  288.     nachlad:
  289.       DEFMOUSE 2
  290.       GET 215,170,425,230,hi$
  291.       DEFFILL ,0,0
  292.       PBOX 215,170,425,230
  293.       BOX 223,200,417,220
  294.       PRINT AT(30,12);"VOKABELN LADEN:"
  295.       ON ERROR GOSUB fehl
  296.       OPEN "R",#1,lad$,480
  297.       FIELD #1,60 AS d1$,60 AS d2$,60 AS d3$,60 AS a1$,60 AS e1$,60 AS e2$,60 AS e3$,60 AS a2$
  298.       ausw#=194/((LOF(#1)/480)-1)
  299.       w#=0
  300.       RECORD #1,1
  301.     ELSE
  302.       GOTO weg
  303.     ENDIF
  304.     IF a%=1
  305.       IF lins#>0
  306.         FOR i#=1 TO lins#
  307.           FOR j#=1 TO 3
  308.             lin1$(i#,j#)=""
  309.             lin2$(i#,j#)=""
  310.           NEXT j#
  311.           anm1$(i#)=""
  312.           anm2$(i#)=""
  313.           status#(i#)=0
  314.           us#(i#)=1
  315.         NEXT i#
  316.         lins#=0
  317.         spei#=1
  318.       ENDIF
  319.       ON ERROR GOSUB fehl
  320.       GET #1,1
  321.       IF d1$<>SPACE$(60)
  322.         fremdspr$=TRIM$(d1$)
  323.       ELSE
  324.         fremdspr$="Fremdsprache"
  325.       ENDIF
  326.       IF d2$<>SPACE$(60)
  327.         lek$=SPACE$(72)+TRIM$(d2$)+" "
  328.       ELSE
  329.         lek$=""
  330.       ENDIF
  331.       z#=0
  332.     ELSE
  333.       ON ERROR GOSUB fehl
  334.       RECORD #1,2
  335.       z#=lins#
  336.     ENDIF
  337.     sz#=1
  338.     DEFFILL ,2,2
  339.     WHILE NOT EOF(#1)
  340.       z#=z#+1
  341.       ON ERROR GOSUB fehl
  342.       sz#=sz#+1
  343.       GET #1,sz#
  344.       IF d1$<>SPACE$(60)
  345.         lin1$(z#,1)=TRIM$(d1$)
  346.       ELSE
  347.         lin1$(z#,1)=""
  348.       ENDIF
  349.       IF d2$<>SPACE$(60)
  350.         lin1$(z#,2)=TRIM$(d2$)
  351.       ELSE
  352.         lin1$(z#,2)=""
  353.       ENDIF
  354.       IF d3$<>SPACE$(60)
  355.         lin1$(z#,3)=TRIM$(d3$)
  356.       ELSE
  357.         lin1$(z#,3)=""
  358.       ENDIF
  359.       IF a1$<>SPACE$(60)
  360.         anm1$(z#)=TRIM$(a1$)
  361.       ELSE
  362.         anm1$(z#)=""
  363.       ENDIF
  364.       IF e1$<>SPACE$(60)
  365.         lin2$(z#,1)=TRIM$(e1$)
  366.       ELSE
  367.         lin2$(z#,i#)=""
  368.       ENDIF
  369.       IF e2$<>SPACE$(60)
  370.         lin2$(z#,2)=TRIM$(e2$)
  371.       ELSE
  372.         lin2$(z#,2)=""
  373.       ENDIF
  374.       IF e3$<>SPACE$(60)
  375.         lin2$(z#,3)=TRIM$(e3$)
  376.       ELSE
  377.         lin2$(z#,3)=""
  378.       ENDIF
  379.       IF a2$<>SPACE$(60)
  380.         anm2$(z#)=TRIM$(a2$)
  381.       ELSE
  382.         anm2$(z#)=""
  383.       ENDIF
  384.       us#(z#)=1
  385.       IF z#=1000
  386.         ALERT 1,"Datei konnte nicht voll-|ständig geladen werden|(1000 Vokabeln Maximum)",1,"Ok",dummy%
  387.         EXIT IF 1
  388.       ENDIF
  389.       w#=w#+ausw#
  390.       PBOX 223,200,223+INT(w#),220
  391.     WEND
  392.     CLOSE #1
  393.     PUT 215,170,hi$
  394.     DEFMOUSE 0
  395.     lins#=z#
  396.     IF lins#=1000
  397.       MENU 19,2
  398.     ENDIF
  399.     akt#=lins#
  400.     clervok
  401.     showvok(3)
  402.     MENU 12,3
  403.     MENU 13,3
  404.     MENU 14,3
  405.     MENU 23,3
  406.     MENU 24,3
  407.     MENU 29,3
  408.     MENU 30,3
  409.     MENU 34,3
  410.     MENU 35,3
  411.     MENU 36,3
  412.     MENU 37,3
  413.     MENU 38,3
  414.     MENU 39,3
  415.     MENU 43,2
  416.     MENU 44,2
  417.     MENU 26,3
  418.     MENU 27,3
  419.     IF LEN(fremdspr$)
  420.       PRINT AT(6,14);SPC(13)
  421.       PRINT AT(6,14);fremdspr$;":"
  422.     ENDIF
  423.     IF LEN(lek$)
  424.       PRINT AT(6,24);SPC(70)
  425.       laufschrift$=lek$
  426.     ELSE
  427.       laufschrift$=SPACE$(72)+"*** VOKUS * Ein Vokabel-Lernprogramm von Thorsten Liese * Geschrieben in GfA-BASIC V3.00 D *"
  428.       laufschrift$=laufschrift$+" 1990/91 V1.1 * Dieses Programm ist >>PUBLIC DOMAIN<< ! Es darf also beliebig kopiert und weitergegeben werden. * Für nur 10.- DM gibt's die neueste Version von VOKUS ! *** "
  429.     ENDIF
  430.     IF lanaus%=2
  431.       PRINT AT(6,24);MID$(laufschrift$,73,70)
  432.     ENDIF
  433.     PRINT AT(21,21);SPC(4)
  434.     PRINT AT(67,21);SPC(4)
  435.     MENU 43,2
  436.     gesamtfehl#=0
  437.     test$=LEFT$(lad$,LEN(lad$)-5)+CHR$(1+ASC(MID$(lad$,LEN(lad$)-4,1)))+".VOK"
  438.     IF EXIST(test$) AND lins#<1000
  439.       ALERT 2,RIGHT$(test$,LEN(test$)-RINSTR(test$,"\"))+"|nachladen ?",1," JA | NEIN ",n%
  440.       IF n%=1
  441.         lad$=test$
  442.         a%=2
  443.         GOTO nachlad
  444.       ENDIF
  445.     ENDIF
  446.   ENDIF
  447.   '
  448.   IF MENU(5)=33
  449.     IF lins#=0
  450.       GOTO weg
  451.     ENDIF
  452.     IF LEN(lad$)
  453.       a$=lad$
  454.     ELSE
  455.       a$="TEST.VOK"
  456.     ENDIF
  457.     IF EXIST(a$)
  458.       ON ERROR GOSUB fehl
  459.       KILL a$
  460.     ENDIF
  461.     DEFMOUSE 2
  462.     GET 215,170,425,230,hi$
  463.     DEFFILL ,0,0
  464.     PBOX 215,170,425,230
  465.     BOX 223,200,417,220
  466.     IF a$=lad$
  467.       PRINT AT(30,12);RIGHT$(a$,LEN(a$)-RINSTR(a$,"\"))'"SPEICHERN"
  468.     ELSE
  469.       PRINT AT(30,12);"'TEST.VOK' SPEICHERN"
  470.     ENDIF
  471.     ON ERROR GOSUB fehl
  472.     OPEN "R",#1,a$,480
  473.     FIELD #1,60 AS d1$,60 AS d2$,60 AS d3$,60 AS a1$,60 AS e1$,60 AS e2$,60 AS e3$,60 AS a2$
  474.     ausw#=194/lins#
  475.     w#=0
  476.     RECORD #1,1
  477.     LSET d1$=fremdspr$
  478.     IF lek$<>""
  479.       LSET d2$=TRIM$(lek$)
  480.     ELSE
  481.       LSET d2$=""
  482.     ENDIF
  483.     LSET d3$=""
  484.     LSET a1$=""
  485.     LSET e1$=""
  486.     LSET e3$=""
  487.     LSET a2$=""
  488.     ON ERROR GOSUB fehl
  489.     PUT #1,1
  490.     DEFFILL ,2,2
  491.     FOR i#=1 TO lins#
  492.       LSET d1$=lin1$(i#,1)
  493.       LSET d2$=lin1$(i#,2)
  494.       LSET d3$=lin1$(i#,3)
  495.       LSET a1$=anm1$(i#)
  496.       LSET e1$=lin2$(i#,1)
  497.       LSET e2$=lin2$(i#,2)
  498.       LSET e3$=lin2$(i#,3)
  499.       LSET a2$=anm2$(i#)
  500.       ON ERROR GOSUB fehl
  501.       PUT #1,i#+1
  502.       w#=w#+ausw#
  503.       PBOX 223,200,223+INT(w#),220
  504.     NEXT i#
  505.     CLOSE #1
  506.     PUT 215,170,hi$
  507.     DEFMOUSE 0
  508.     spei#=1
  509.   ENDIF
  510.   IF MENU(5)=34
  511.     IF lins#=0
  512.       GOTO weg
  513.     ENDIF
  514.     FILESELECT "\*.VOK","",spei$
  515.     IF spei$<>"\" AND spei$<>""
  516.       IF EXIST(spei$)
  517.         ALERT 3,"Datei existiert schon!",1,"Ersetzen|Abbruch",a%
  518.         IF a%=1
  519.           KILL spei$
  520.         ELSE
  521.           GOTO weg
  522.         ENDIF
  523.       ENDIF
  524.       DEFMOUSE 2
  525.       GET 215,170,425,230,hi$
  526.       DEFFILL ,0,0
  527.       PBOX 215,170,425,230
  528.       BOX 223,200,417,220
  529.       PRINT AT(30,12);"VOKABELN SPEICHERN:"
  530.       lad$=spei$
  531.       ON ERROR GOSUB fehl
  532.       OPEN "R",#1,spei$,480
  533.       FIELD #1,60 AS d1$,60 AS d2$,60 AS d3$,60 AS a1$,60 AS e1$,60 AS e2$,60 AS e3$,60 AS a2$
  534.       ausw#=194/lins#
  535.       w#=0
  536.       RECORD #1,1
  537.       LSET d1$=fremdspr$
  538.       IF lek$<>""
  539.         LSET d2$=TRIM$(lek$)
  540.       ELSE
  541.         LSET d2$=""
  542.       ENDIF
  543.       LSET d3$=""
  544.       LSET a1$=""
  545.       LSET e1$=""
  546.       LSET e3$=""
  547.       LSET a2$=""
  548.       ON ERROR GOSUB fehl
  549.       PUT #1,1
  550.       DEFFILL ,2,2
  551.       FOR i#=1 TO lins#
  552.         LSET d1$=lin1$(i#,1)
  553.         LSET d2$=lin1$(i#,2)
  554.         LSET d3$=lin1$(i#,3)
  555.         LSET a1$=anm1$(i#)
  556.         LSET e1$=lin2$(i#,1)
  557.         LSET e2$=lin2$(i#,2)
  558.         LSET e3$=lin2$(i#,3)
  559.         LSET a2$=anm2$(i#)
  560.         ON ERROR GOSUB fehl
  561.         PUT #1,i#+1
  562.         w#=w#+ausw#
  563.         PBOX 223,200,223+INT(w#),220
  564.       NEXT i#
  565.       CLOSE #1
  566.       PUT 215,170,hi$
  567.       DEFMOUSE 0
  568.       spei#=1
  569.       ALERT 1,"Ok, kein Fehler!",1,"Gut",dummy%
  570.     ELSE
  571.       GOTO weg
  572.     ENDIF
  573.   ENDIF
  574.   IF MENU(5)=37
  575.     ALERT 2,"Programm beenden ?",0,"Ja|Nein",a%
  576.     IF a%=1
  577.       IF spei#=0
  578.         ALERT 1,"Achtung! Sie haben die|Vokabeln im Speicher|nicht gesichert!",1,"Quit|Abbruch",b%
  579.         IF b%=2
  580.           GOTO weg
  581.         ENDIF
  582.       ENDIF
  583.       FOR i#=0 TO 320
  584.         BOX i#,i#,640-i#,400-i#
  585.       NEXT i#
  586.       QUIT
  587.     ENDIF
  588.   ENDIF
  589.   IF MENU(5)=35
  590.     IF lins#=0
  591.       GOTO weg
  592.     ENDIF
  593.     ALERT 2,"Wirklich alle Vokabeln|löschen?",2,"Ja|Nein",a%
  594.     IF a%=1
  595.       FOR i#=1 TO lins#
  596.         FOR j#=1 TO 3
  597.           lin1$(i#,j#)=""
  598.           lin2$(i#,j#)=""
  599.         NEXT j#
  600.         status#(i#)=0
  601.         anm1$(i#)=""
  602.         anm2$(i#)=""
  603.         us#(i#)=1
  604.       NEXT i#
  605.       clervok
  606.       lins#=0
  607.       ablins#=0
  608.       gesamtfehl#=0
  609.       akt#=0
  610.       PRINT AT(21,21);SPC(4)
  611.       PRINT AT(67,21);SPC(4)
  612.       MENU 12,2
  613.       MENU 13,2
  614.       MENU 14,2
  615.       MENU 19,3
  616.       MENU 23,2
  617.       MENU 24,2
  618.       MENU 29,2
  619.       MENU 30,2
  620.       MENU 34,2
  621.       MENU 35,2
  622.       MENU 36,2
  623.       MENU 37,2
  624.       MENU 38,2
  625.       MENU 39,2
  626.       MENU 43,2
  627.       MENU 44,2
  628.       MENU 26,2
  629.       MENU 27,2
  630.       laufschrift$=SPACE$(72)+"*** VOKUS * Ein Vokabel-Lernprogramm von Thorsten Liese * Geschrieben in GfA-BASIC V3.00 D *"
  631.       laufschrift$=laufschrift$+" 1990/91 V1.1 * Dieses Programm ist >>PUBLIC DOMAIN<< ! Es darf also beliebig kopiert und weitergegeben werden. * Für nur 10.- DM gibt's die neueste Version von VOKUS ! *** "
  632.       IF lanaus%=2
  633.         PRINT AT(6,24);SPC(70)
  634.         PRINT AT(6,24);MID$(laufschrift$,73,70)
  635.       ENDIF
  636.       PRINT AT(6,14);SPC(15)
  637.       PRINT AT(6,14);"Fremdsprache:"
  638.       fremdspr$=""
  639.       lek$=""
  640.       lad$=""
  641.     ENDIF
  642.   ENDIF
  643.   IF MENU(5)=39
  644.     IF lins#=1000
  645.       ALERT 3,"Es können keine Vokabeln|mehr eingegeben werden!",1,"Abbruch",dummy%
  646.       GOTO weg
  647.     ENDIF
  648.     alt#=lins#
  649.     DO
  650.       clervok
  651.       lins#=lins#+1
  652.       akt#=lins#
  653.       PRINT AT(14,4);akt#
  654.       PRINT AT(7,9);
  655.       FORM INPUT 60,lin1$(akt#,1)
  656.       spacweg(lin1$(akt#,1),back$)
  657.       lin1$(akt#,1)=back$
  658.       IF lin1$(akt#,1)=""
  659.         lins#=lins#-1
  660.         akt#=akt#-1
  661.         EXIT IF -1
  662.       ENDIF
  663.       PRINT AT(7,10);
  664.       FORM INPUT 60,lin1$(akt#,2)
  665.       spacweg(lin1$(akt#,2),back$)
  666.       lin1$(akt#,2)=back$
  667.       PRINT AT(7,11);
  668.       FORM INPUT 60,lin1$(akt#,3)
  669.       spacweg(lin1$(akt#,3),back$)
  670.       lin1$(akt#,3)=back$
  671.       PRINT AT(7,12);
  672.       FORM INPUT 60,anm1$(akt#)
  673.       IF anm1$(akt#)<>SPACE$(LEN(anm1$(akt#)))
  674.         anm1$(akt#)=TRIM$(anm1$(akt#))
  675.       ELSE
  676.         anm1$(akt#)=""
  677.       ENDIF
  678.     g5:
  679.       PRINT AT(7,16);
  680.       FORM INPUT 60,lin2$(akt#,1)
  681.       spacweg(lin2$(akt#,1),back$)
  682.       IF back$=""
  683.         GOTO g5
  684.       ENDIF
  685.       lin2$(akt#,1)=back$
  686.       PRINT AT(7,17);
  687.       FORM INPUT 60,lin2$(akt#,2)
  688.       spacweg(lin2$(akt#,2),back$)
  689.       lin2$(akt#,2)=back$
  690.       PRINT AT(7,18);
  691.       FORM INPUT 60,lin2$(akt#,3)
  692.       spacweg(lin2$(akt#,3),back$)
  693.       lin2$(akt#,3)=back$
  694.       PRINT AT(7,19);
  695.       FORM INPUT 60,anm2$(akt#)
  696.       IF anm2$(akt#)<>SPACE$(LEN(anm2$(akt#)))
  697.         anm2$(akt#)=TRIM$(anm2$(akt#))
  698.       ELSE
  699.         anm2$(akt#)=""
  700.       ENDIF
  701.       IF PEEK(XBIOS(32,L:-1))=96 AND musik#=1
  702.         ~XBIOS(32,L:musikadresse%)
  703.       ENDIF
  704.       EXIT IF lins#=1000
  705.     LOOP
  706.     IF lins#=0
  707.       clervok
  708.       GOTO weg
  709.     ENDIF
  710.     IF alt#=0
  711.       MENU 12,3
  712.       MENU 13,3
  713.       MENU 14,3
  714.       MENU 23,3
  715.       MENU 24,3
  716.       MENU 29,3
  717.       MENU 30,3
  718.       MENU 34,3
  719.       MENU 35,3
  720.       MENU 36,3
  721.       MENU 37,3
  722.       MENU 38,3
  723.       MENU 39,3
  724.       MENU 26,3
  725.       MENU 27,3
  726.     ENDIF
  727.     IF lins#<>alt#
  728.       spei#=0
  729.       MENU 43,2
  730.       MENU 44,2
  731.       PRINT AT(21,21);SPC(4)
  732.       gesamtfehl#=0
  733.     ENDIF
  734.     clervok
  735.     showvok(3)
  736.   ENDIF
  737.   IF MENU(5)=42
  738.     IF lins#=0
  739.       GOTO weg
  740.     ENDIF
  741.     PRINT AT(6,24);SPC(70)
  742.     PRINT AT(6,24);"<Insrt>=nehmen;<Clr>=rausnehmen;Cursortasten=vor,zurück;+<Cntrl>=alles"
  743.     IF us#(akt#)=1
  744.       DEFTEXT 1,0,0,6
  745.       TEXT 533,55,"Vokabel"
  746.       TEXT 533,65," wird"
  747.       TEXT 523,75,"abgefragt"
  748.     ENDIF
  749.     REPEAT
  750.       a$=INKEY$
  751.       skey%=BIOS(11,-1)
  752.       IF LEN(a$)=1
  753.         IF UPPER$(a$)="S"
  754.           MENU 43,2
  755.           ALERT 1,"Es werden alle Vokabeln ge-|wählt,die mindestens x mal|falsch gemacht worden sind !",1,"Aha",dummy%
  756.           diain("Wert für X :",2,eing$)
  757.           spacweg(eing$,back$)
  758.           eing$=back$
  759.           IF eing$<>""
  760.             FOR i#=1 TO lins#
  761.               IF status#(i#)>=VAL(eing$)
  762.                 us#(i#)=1
  763.               ELSE
  764.                 us#(i#)=0
  765.               ENDIF
  766.             NEXT i#
  767.             IF us#(akt#)=1
  768.               DEFTEXT 1,0,0,6
  769.               TEXT 533,55,"Vokabel"
  770.               TEXT 533,65," wird"
  771.               TEXT 523,75,"abgefragt"
  772.             ELSE
  773.               DEFFILL ,0,0
  774.               PBOX 519,29,601,111
  775.             ENDIF
  776.           ENDIF
  777.         ENDIF
  778.       ENDIF
  779.       IF LEN(a$)=2
  780.         IF ASC(RIGHT$(a$))=82
  781.           MENU 43,2
  782.           IF skey% AND 4
  783.             FOR i#=1 TO lins#
  784.               us#(i#)=1
  785.             NEXT i#
  786.           ELSE
  787.             us#(akt#)=1
  788.           ENDIF
  789.           DEFTEXT 1,0,0,6
  790.           TEXT 533,55,"Vokabel"
  791.           TEXT 533,65," wird"
  792.           TEXT 523,75,"abgefragt"
  793.         ENDIF
  794.         IF ASC(RIGHT$(a$))=71
  795.           MENU 43,2
  796.           us#(akt#)=0
  797.           DEFFILL ,0,0
  798.           PBOX 519,29,601,111
  799.         ENDIF
  800.         IF ASC(RIGHT$(a$))=119
  801.           MENU 43,2
  802.           FOR i#=1 TO lins#
  803.             us#(i#)=0
  804.           NEXT i#
  805.           DEFFILL ,0,0
  806.           PBOX 519,29,601,111
  807.         ENDIF
  808.         IF ASC(RIGHT$(a$))=77
  809.           MENU 43,2
  810.           akt#=akt#+1
  811.           IF akt#>lins#
  812.             akt#=lins#
  813.           ENDIF
  814.           clervok
  815.           showvok(3)
  816.           IF us#(akt#)=1
  817.             DEFTEXT 1,0,0,6
  818.             TEXT 533,55,"Vokabel"
  819.             TEXT 533,65," wird"
  820.             TEXT 523,75,"abgefragt"
  821.           ELSE
  822.             DEFFILL ,0,0
  823.             PBOX 519,29,601,111
  824.           ENDIF
  825.         ENDIF
  826.         IF ASC(RIGHT$(a$))=116
  827.           MENU 43,2
  828.           akt#=akt#+20
  829.           IF akt#>lins#
  830.             akt#=lins#
  831.           ENDIF
  832.           clervok
  833.           showvok(3)
  834.           IF us#(akt#)=1
  835.             DEFTEXT 1,0,0,6
  836.             TEXT 533,55,"Vokabel"
  837.             TEXT 533,65," wird"
  838.             TEXT 523,75,"abgefragt"
  839.           ELSE
  840.             DEFFILL ,0,0
  841.             PBOX 519,29,601,111
  842.           ENDIF
  843.         ENDIF
  844.         IF ASC(RIGHT$(a$))=75
  845.           MENU 43,2
  846.           akt#=akt#-1
  847.           IF akt#<1
  848.             akt#=1
  849.           ENDIF
  850.           clervok
  851.           showvok(3)
  852.           IF us#(akt#)=1
  853.             DEFTEXT 1,0,0,6
  854.             TEXT 533,55,"Vokabel"
  855.             TEXT 533,65," wird"
  856.             TEXT 523,75,"abgefragt"
  857.           ELSE
  858.             DEFFILL ,0,0
  859.             PBOX 519,29,601,111
  860.           ENDIF
  861.         ENDIF
  862.         IF ASC(RIGHT$(a$))=115
  863.           MENU 43,2
  864.           akt#=akt#-20
  865.           IF akt#<1
  866.             akt#=1
  867.           ENDIF
  868.           clervok
  869.           showvok(3)
  870.           IF us#(akt#)=1
  871.             DEFTEXT 1,0,0,6
  872.             TEXT 533,55,"Vokabel"
  873.             TEXT 533,65," wird"
  874.             TEXT 523,75,"abgefragt"
  875.           ELSE
  876.             DEFFILL ,0,0
  877.             PBOX 519,29,601,111
  878.           ENDIF
  879.         ENDIF
  880.         IF ASC(RIGHT$(a$))=72
  881.           MENU 43,2
  882.           akt#=lins#
  883.           clervok
  884.           showvok(3)
  885.           IF us#(akt#)=1
  886.             DEFTEXT 1,0,0,6
  887.             TEXT 533,55,"Vokabel"
  888.             TEXT 533,65," wird"
  889.             TEXT 523,75,"abgefragt"
  890.           ELSE
  891.             DEFFILL ,0,0
  892.             PBOX 519,29,601,111
  893.           ENDIF
  894.         ENDIF
  895.         IF ASC(RIGHT$(a$))=80
  896.           MENU 43,2
  897.           akt#=1
  898.           clervok
  899.           showvok(3)
  900.           IF us#(akt#)=1
  901.             DEFTEXT 1,0,0,6
  902.             TEXT 533,55,"Vokabel"
  903.             TEXT 533,65," wird"
  904.             TEXT 523,75,"abgefragt"
  905.           ELSE
  906.             DEFFILL ,0,0
  907.             PBOX 519,29,601,111
  908.           ENDIF
  909.         ENDIF
  910.       ENDIF
  911.       IF PEEK(XBIOS(32,L:-1))=96 AND musik#=1
  912.         ~XBIOS(32,L:musikadresse%)
  913.       ENDIF
  914.     UNTIL MOUSEK=2
  915.     DEFFILL ,0,0
  916.     PBOX 519,29,601,111
  917.     PRINT AT(6,24);SPC(70)
  918.     IF lanaus%=2
  919.       PRINT AT(6,24);MID$(laufschrift$,73,70)
  920.     ENDIF
  921.     v#=0
  922.     FOR i#=1 TO lins#
  923.       IF us#(i#)=0
  924.         v#=v#+1
  925.       ENDIF
  926.     NEXT i#
  927.     IF v#=lins#
  928.       FOR i#=1 TO lins#
  929.         us#(i#)=1
  930.       NEXT i#
  931.     ENDIF
  932.   ENDIF
  933.   '
  934.   IF MENU(5)=43
  935.     IF lins#=0
  936.       GOTO weg
  937.     ENDIF
  938.     MENU KILL
  939.     SGET hi$
  940.     CLS
  941.     PRINT AT((79-LEN(MID$(lek$,73)))/2,1);lek$
  942.     PRINT
  943.     FOR i#=1 TO lins#
  944.       IF us#(i#)=1
  945.         PRINT i#;
  946.         deu$=lin1$(i#,1)
  947.         IF LEN(lin1$(i#,2))
  948.           deu$=deu$+" / "+lin1$(i#,2)
  949.         ENDIF
  950.         IF LEN(lin1$(i#,3))
  951.           deu$=deu$+" / "+lin1$(i#,3)
  952.         ENDIF
  953.         IF LEN(anm1$(i#))
  954.           deu$=deu$+" ("+anm1$(i#)+")"
  955.         ENDIF
  956.         engl$=lin2$(i#,1)
  957.         IF LEN(lin2$(i#,2))
  958.           engl$=engl$+" / "+lin2$(i#,2)
  959.         ENDIF
  960.         IF LEN(lin2$(i#,3))
  961.           engl$=engl$+" / "+lin2$(i#,3)
  962.         ENDIF
  963.         IF LEN(anm2$(i#))
  964.           engl$=engl$+" ("+anm2$(i#)+")"
  965.         ENDIF
  966.         deuz#=1
  967.         englz#=1
  968.         REPEAT
  969.           IF deuz#<=LEN(deu$)
  970.             IF LEN(MID$(deu$,deuz#))>30
  971.               w#=MAX(RINSTR(MID$(deu$,deuz#,30)," "),RINSTR(MID$(deu$,deuz#,30),","))
  972.               IF w#=0
  973.                 w#=30
  974.                 deuz#=deuz#+30
  975.               ELSE
  976.                 deuz#=deuz#+w#
  977.               ENDIF
  978.               PRINT TAB(6);MID$(deu$,deuz#-w#,w#);
  979.             ELSE
  980.               PRINT TAB(6);MID$(deu$,deuz#);
  981.               deuz#=LEN(deu$)+1
  982.             ENDIF
  983.           ENDIF
  984.           IF englz#<=LEN(engl$)
  985.             IF LEN(MID$(engl$,englz#))>30
  986.               w#=MAX(RINSTR(MID$(engl$,englz#,30)," "),RINSTR(MID$(engl$,englz#,30),","))
  987.               IF w#=0
  988.                 w#=30
  989.                 englz#=englz#+30
  990.               ELSE
  991.                 englz#=englz#+w#
  992.               ENDIF
  993.               PRINT TAB(41);MID$(engl$,englz#-w#,w#)
  994.             ELSE
  995.               PRINT TAB(41);MID$(engl$,englz#)
  996.               englz#=LEN(engl$)+1
  997.             ENDIF
  998.           ELSE
  999.             PRINT
  1000.           ENDIF
  1001.         UNTIL deuz#>LEN(deu$) AND englz#>LEN(engl$)
  1002.         IF i#>14 AND MOD(i#,15)=0
  1003.           REPEAT
  1004.             a$=INKEY$
  1005.           UNTIL LEN(a$)
  1006.           EXIT IF UPPER$(a$)="Q"
  1007.         ENDIF
  1008.       ENDIF
  1009.     NEXT i#
  1010.     IF UPPER$(a$)<>"Q"
  1011.       REPEAT
  1012.       UNTIL LEN(INKEY$)
  1013.     ENDIF
  1014.     SPUT hi$
  1015.     MENU menu$()
  1016.     IF gesamtfehl#=0
  1017.       MENU 43,2
  1018.     ENDIF
  1019.     MENU 44,2
  1020.     IF lanaus%=1
  1021.       MENU 56,1
  1022.     ENDIF
  1023.     IF grber%=1
  1024.       MENU 45,1
  1025.     ENDIF
  1026.   ENDIF
  1027.   '
  1028.   IF MENU(5)=45
  1029.     FOR i#=1 TO lins#
  1030.       akt#=i#
  1031.       IF us#(i#)=1
  1032.         PRINT AT(6,24);SPC(70)
  1033.         PRINT AT(6,24);"   Bitte eine Taste drücken, um die Lösung zu zeigen."
  1034.         clervok
  1035.         showvok(1)
  1036.         REPEAT
  1037.         UNTIL INKEY$=""
  1038.         REPEAT
  1039.         UNTIL INKEY$<>""
  1040.         showvok(2)
  1041.         PRINT AT(6,24);SPC(70)
  1042.         PRINT AT(6,24);"       Taste drücken ;  [ESC] = Abbruch"
  1043.         REPEAT
  1044.           a$=INKEY$
  1045.         UNTIL a$<>""
  1046.         EXIT IF a$=CHR$(27)
  1047.       ENDIF
  1048.       IF PEEK(XBIOS(32,L:-1))=96 AND musik#=1
  1049.         ~XBIOS(32,L:musikadresse%)
  1050.       ENDIF
  1051.     NEXT i#
  1052.     PRINT AT(6,24);SPC(70)
  1053.     IF lanaus%=2
  1054.       PRINT AT(6,24);MID$(laufschrift$,73,70)
  1055.     ENDIF
  1056.   ENDIF
  1057.   '
  1058.   IF MENU(5)=46
  1059.     FOR i#=1 TO lins#
  1060.       akt#=i#
  1061.       IF us#(i#)=1
  1062.         PRINT AT(6,24);SPC(70)
  1063.         PRINT AT(6,24);"   Bitte eine Taste drücken, um die Lösung zu zeigen."
  1064.         clervok
  1065.         showvok(2)
  1066.         REPEAT
  1067.         UNTIL INKEY$=""
  1068.         REPEAT
  1069.         UNTIL INKEY$<>""
  1070.         showvok(1)
  1071.         PRINT AT(6,24);SPC(70)
  1072.         PRINT AT(6,24);"       Taste drücken ;  [ESC] = Abbruch"
  1073.         REPEAT
  1074.           a$=INKEY$
  1075.         UNTIL a$<>""
  1076.         EXIT IF a$=CHR$(27)
  1077.       ENDIF
  1078.       IF PEEK(XBIOS(32,L:-1))=96 AND musik#=1
  1079.         ~XBIOS(32,L:musikadresse%)
  1080.       ENDIF
  1081.     NEXT i#
  1082.     PRINT AT(6,24);SPC(70)
  1083.     IF lanaus%=2
  1084.       PRINT AT(6,24);MID$(laufschrift$,73,70)
  1085.     ENDIF
  1086.   ENDIF
  1087.   '
  1088.   IF MENU(5)=48
  1089.     beivf#=0
  1090.     gesamtfehl#=0
  1091.     PRINT AT(21,21);SPC(4)
  1092.     eing1$="@"
  1093.     eing2$="@"
  1094.     eing3$="@"
  1095.     topf#=0
  1096.     FOR n#=1 TO lins#
  1097.       IF us#(n#)=1
  1098.         drin#(n#)=1
  1099.         topf#=topf#+1
  1100.       ELSE
  1101.         drin#(n#)=0
  1102.       ENDIF
  1103.     NEXT n#
  1104.     FOR n#=1 TO lins#
  1105.       IF drin#(n#)=1
  1106.         status#(n#)=0
  1107.       ENDIF
  1108.     NEXT n#
  1109.     ablins#=0
  1110.     REPEAT
  1111.       REPEAT
  1112.         akt#=1+RANDOM(lins#)
  1113.       UNTIL drin#(akt#)=1
  1114.       ablins#=ablins#+1
  1115.       clervok
  1116.       showvok(1)
  1117.       PRINT AT(6,24);SPC(70)
  1118.       IF topf#=1
  1119.         PRINT AT(6,24);"Dies ist die letzte Vokabel!"
  1120.       ELSE
  1121.         PRINT AT(6,24);" Es werden noch ";topf#;" Vokabeln abgefragt."
  1122.       ENDIF
  1123.       PRINT AT(7,16);
  1124.       FORM INPUT 60,eing1$
  1125.       spacweg(eing1$,back$)
  1126.       eing1$=back$
  1127.       IF allerichtig%=2
  1128.         bedeutung1#=0
  1129.         bedeutung2#=0
  1130.         bedeutung3#=0
  1131.         IF lin2$(akt#,2)<>""
  1132.           PRINT AT(7,17);
  1133.           FORM INPUT 60,eing2$
  1134.           spacweg(eing2$,back$)
  1135.           eing2$=back$
  1136.         ELSE
  1137.           eing2$="@"
  1138.           bedeutung2#=1
  1139.         ENDIF
  1140.         IF lin2$(akt#,3)<>""
  1141.           PRINT AT(7,18);
  1142.           FORM INPUT 60,eing3$
  1143.           spacweg(eing3$,back$)
  1144.           eing3$=back$
  1145.         ELSE
  1146.           eing3$="@"
  1147.           bedeutung3#=1
  1148.         ENDIF
  1149.         PRINT AT(6,24);SPC(70)
  1150.         IF eing1$="" OR eing2$="" OR eing3$=""
  1151.           eing1$="@"
  1152.           eing2$="@"
  1153.           eing3$="@"
  1154.           GOTO g3
  1155.         ENDIF
  1156.         IF grber%=1
  1157.           IF eing1$=lin2$(akt#,1)
  1158.             bedeutung1#=1
  1159.           ENDIF
  1160.           IF eing1$=lin2$(akt#,2)
  1161.             bedeutung1#=2
  1162.           ENDIF
  1163.           IF eing1$=lin2$(akt#,3)
  1164.             bedeutung1#=3
  1165.           ENDIF
  1166.           IF eing2$=lin2$(akt#,1) AND bedeutung1#<>1
  1167.             bedeutung2#=1
  1168.           ENDIF
  1169.           IF eing2$=lin2$(akt#,2) AND bedeutung1#<>2
  1170.             bedeutung2#=2
  1171.           ENDIF
  1172.           IF eing2$=lin2$(akt#,3) AND bedeutung1#<>3
  1173.             bedeutung2#=3
  1174.           ENDIF
  1175.           IF eing3$=lin2$(akt#,1) AND bedeutung1#<>1 AND bedeutung2#<>1
  1176.             bedeutung3#=1
  1177.           ENDIF
  1178.           IF eing3$=lin2$(akt#,2) AND bedeutung1#<>2 AND bedeutung2#<>2
  1179.             bedeutung3#=2
  1180.           ENDIF
  1181.           IF eing3$=lin2$(akt#,3) AND bedeutung1#<>3 AND bedeutung2#<>3
  1182.             bedeutung3#=3
  1183.           ENDIF
  1184.         ELSE
  1185.           IF UPPER$(eing1$)=UPPER$(lin2$(akt#,1))
  1186.             bedeutung1#=1
  1187.           ENDIF
  1188.           IF UPPER$(eing1$)=UPPER$(lin2$(akt#,2))
  1189.             bedeutung1#=2
  1190.           ENDIF
  1191.           IF UPPER$(eing1$)=UPPER$(lin2$(akt#,3))
  1192.             bedeutung1#=3
  1193.           ENDIF
  1194.           IF UPPER$(eing2$)=UPPER$(lin2$(akt#,1)) AND bedeutung1#<>1
  1195.             bedeutung2#=1
  1196.           ENDIF
  1197.           IF UPPER$(eing2$)=UPPER$(lin2$(akt#,2)) AND bedeutung1#<>2
  1198.             bedeutung2#=2
  1199.           ENDIF
  1200.           IF UPPER$(eing2$)=UPPER$(lin2$(akt#,3)) AND bedeutung1#<>3
  1201.             bedeutung2#=3
  1202.           ENDIF
  1203.           IF UPPER$(eing3$)=UPPER$(lin2$(akt#,1)) AND bedeutung1#<>1 AND bedeutung2#<>1
  1204.             bedeutung3#=1
  1205.           ENDIF
  1206.           IF UPPER$(eing3$)=UPPER$(lin2$(akt#,2)) AND bedeutung1#<>2 AND bedeutung2#<>2
  1207.             bedeutung3#=2
  1208.           ENDIF
  1209.           IF UPPER$(eing3$)=UPPER$(lin2$(akt#,3)) AND bedeutung1#<>3 AND bedeutung2#<>3
  1210.             bedeutung3#=3
  1211.           ENDIF
  1212.         ENDIF
  1213.         IF bedeutung1#>0 AND bedeutung2#>0 AND bedeutung3#>0
  1214.           IF nachfrag#=1
  1215.             FOR i#=1 TO 160
  1216.               IF INSTR(eing1$,MID$(unregel$(i#,1),4)) OR INSTR(eing2$,MID$(unregel$(i#,1),4)) OR INSTR(eing3$,MID$(unregel$(i#,1),4))
  1217.                 IF i#=3 OR i#=9 OR i#=10 OR i#=25 OR i#=35 OR i#=36 OR i#=37 OR i#=43 OR i#=57 OR i#=59 OR i#=93 OR i#=97 OR i#=104
  1218.                   IF INSTR(eing1$,unregel$(i#,1))=0
  1219.                     GOTO weg1
  1220.                   ENDIF
  1221.                 ENDIF
  1222.                 clervok
  1223.                 PRINT AT(14,4);akt#
  1224.                 PRINT AT(7,9);"Simple Past von '";unregel$(i#,1);"' !"
  1225.               vw1:
  1226.                 PRINT AT(7,16);
  1227.                 FORM INPUT 60,v1$
  1228.                 spacweg(v1$,back$)
  1229.                 IF back$=""
  1230.                   GOTO vw1
  1231.                 ENDIF
  1232.                 v1$=back$
  1233.                 IF UPPER$(v1$)<>UPPER$(unregel$(i#,2))
  1234.                   beivf#=1
  1235.                   EXIT IF 1
  1236.                 ENDIF
  1237.                 clervok
  1238.                 PRINT AT(14,4);akt#
  1239.                 PRINT AT(7,9);"Past Participle von '";unregel$(i#,1);"' !"
  1240.               vw2:
  1241.                 PRINT AT(7,16);
  1242.                 FORM INPUT 60,v2$
  1243.                 spacweg(v2$,back$)
  1244.                 IF back$=""
  1245.                   GOTO vw2
  1246.                 ENDIF
  1247.                 v2$=back$
  1248.                 IF UPPER$(v2$)<>UPPER$(unregel$(i#,3))
  1249.                   beivf#=2
  1250.                   EXIT IF 1
  1251.                 ENDIF
  1252.               ENDIF
  1253.             weg1:
  1254.             NEXT i#
  1255.             IF beivf#>0
  1256.               GOTO g3
  1257.             ENDIF
  1258.           ENDIF
  1259.           PUT 520,30,sym2$
  1260.           topf#=topf#-1
  1261.           PRINT AT(7,19);SPC(60)
  1262.           PRINT AT(7,19);anm2$(akt#)
  1263.           PRINT AT(6,24);SPC(70)
  1264.           PRINT AT(6,24);"  BRAVO !  Alles richtig !!     (Taste drücken, ESC für Abbruch)"
  1265.           drin#(akt#)=0
  1266.           REPEAT
  1267.             a$=INKEY$
  1268.           UNTIL LEN(a$)
  1269.           IF a$=CHR$(27)
  1270.             EXIT IF 1
  1271.           ENDIF
  1272.           PRINT AT(6,24);SPC(70)
  1273.         ELSE
  1274.         g3:
  1275.           PUT 520,30,sym1$
  1276.           PRINT AT(6,24);SPC(70)
  1277.           PRINT AT(6,24);"  Das ist leider nicht ganz richtig. (Taste drücken)"
  1278.           REPEAT
  1279.           UNTIL LEN(INKEY$)
  1280.           IF beivf#=1
  1281.             PRINT AT(7,16);SPC(60)
  1282.             PRINT AT(7,16);unregel$(i#,2)
  1283.           ENDIF
  1284.           IF beivf#=2
  1285.             PRINT AT(7,16);SPC(60)
  1286.             PRINT AT(7,16);unregel$(i#,3)
  1287.           ENDIF
  1288.           IF beivf#=0
  1289.             clervok
  1290.             showvok(3)
  1291.           ENDIF
  1292.           beivf#=0
  1293.           PRINT AT(6,24);SPC(70)
  1294.           PRINT AT(6,24);"Das ist die richtige Lösung !     [Taste drücken]"
  1295.           REPEAT
  1296.           UNTIL LEN(INKEY$)
  1297.           ALERT 1,"Die Antwort war falsch!|Trotzdem als richtig werten?",1,"Falsch|Richtig|Abbruch",b%
  1298.           IF b%=3
  1299.             ALERT 3,"Die letzte Vokabel als|richtig werten ?",1,"Nein|Ja",c%
  1300.             IF c%=1
  1301.               gesamtfehl#=gesamtfehl#+1
  1302.               status#(akt#)=status#(akt#)+1
  1303.               EXIT IF 1
  1304.             ELSE
  1305.               topf#=topf#-1
  1306.               EXIT IF 1
  1307.             ENDIF
  1308.           ENDIF
  1309.           IF b%=1
  1310.             gesamtfehl#=gesamtfehl#+1
  1311.             status#(akt#)=status#(akt#)+1
  1312.           ENDIF
  1313.           IF b%=2
  1314.             drin#(akt#)=0
  1315.             topf#=topf#-1
  1316.           ENDIF
  1317.           PRINT AT(6,24);SPC(70)
  1318.         ENDIF
  1319.       ELSE
  1320.         PRINT AT(6,24);SPC(70)
  1321.         IF eing1$=""
  1322.           eing1$="@"
  1323.           GOTO g4
  1324.         ENDIF
  1325.         bedeutung1#=0
  1326.         IF grber%=1
  1327.           IF eing1$=lin2$(akt#,1) OR eing1$=lin2$(akt#,2) OR eing1$=lin2$(akt#,3)
  1328.             bedeutung1#=1
  1329.           ENDIF
  1330.         ELSE
  1331.           IF UPPER$(eing1$)=UPPER$(lin2$(akt#,1)) OR UPPER$(eing1$)=UPPER$(lin2$(akt#,2)) OR UPPER$(eing1$)=UPPER$(lin2$(akt#,3))
  1332.             bedeutung1#=1
  1333.           ENDIF
  1334.         ENDIF
  1335.         IF bedeutung1#=1
  1336.           IF nachfrag#=1
  1337.             FOR i#=1 TO 160
  1338.               IF INSTR(eing1$,MID$(unregel$(i#,1),4))
  1339.                 IF i#=3 OR i#=9 OR i#=10 OR i#=25 OR i#=35 OR i#=36 OR i#=37 OR i#=43 OR i#=57 OR i#=59 OR i#=93 OR i#=97 OR i#=104
  1340.                   IF INSTR(eing1$,unregel$(i#,1))=0
  1341.                     GOTO weg2
  1342.                   ENDIF
  1343.                 ENDIF
  1344.                 clervok
  1345.                 PRINT AT(14,4);akt#
  1346.                 PRINT AT(7,9);"Simple Past von '";unregel$(i#,1);"' !"
  1347.               vw3:
  1348.                 PRINT AT(7,16);
  1349.                 FORM INPUT 60,v1$
  1350.                 spacweg(v1$,back$)
  1351.                 IF back$=""
  1352.                   GOTO vw3
  1353.                 ENDIF
  1354.                 v1$=back$
  1355.                 IF UPPER$(v1$)<>UPPER$(unregel$(i#,2))
  1356.                   beivf#=1
  1357.                   EXIT IF 1
  1358.                 ENDIF
  1359.                 clervok
  1360.                 PRINT AT(14,4);akt#
  1361.                 PRINT AT(7,9);"Past Participle von '";unregel$(i#,1);"' !"
  1362.               vw4:
  1363.                 PRINT AT(7,16);
  1364.                 FORM INPUT 60,v2$
  1365.                 spacweg(v2$,back$)
  1366.                 IF back$=""
  1367.                   GOTO vw4
  1368.                 ENDIF
  1369.                 v2$=back$
  1370.                 IF UPPER$(v2$)<>UPPER$(unregel$(i#,3))
  1371.                   beivf#=2
  1372.                   EXIT IF 1
  1373.                 ENDIF
  1374.               ENDIF
  1375.             weg2:
  1376.             NEXT i#
  1377.             IF beivf#>0
  1378.               GOTO g4
  1379.             ENDIF
  1380.           ENDIF
  1381.           PUT 520,30,sym3$
  1382.           topf#=topf#-1
  1383.           PRINT AT(6,24);SPC(70)
  1384.           PRINT AT(6,24);"        Richtig !      (Taste drücken; ESC für Abbruch)"
  1385.           drin#(akt#)=0
  1386.           clervok
  1387.           showvok(3)
  1388.           REPEAT
  1389.             a$=INKEY$
  1390.           UNTIL LEN(a$)
  1391.           IF a$=CHR$(27)
  1392.             EXIT IF 1
  1393.           ENDIF
  1394.           PRINT AT(6,24);SPC(70)
  1395.         ELSE
  1396.         g4:
  1397.           PUT 520,30,sym1$
  1398.           PRINT AT(6,24);SPC(70)
  1399.           PRINT AT(6,24);"  Das ist leider falsch ! (Taste drücken)"
  1400.           REPEAT
  1401.           UNTIL LEN(INKEY$)
  1402.           IF beivf#=1
  1403.             PRINT AT(7,16);SPC(60)
  1404.             PRINT AT(7,16);unregel$(i#,2)
  1405.           ENDIF
  1406.           IF beivf#=2
  1407.             PRINT AT(7,16);SPC(60)
  1408.             PRINT AT(7,16);unregel$(i#,3)
  1409.           ENDIF
  1410.           IF beivf#=0
  1411.             clervok
  1412.             showvok(3)
  1413.           ENDIF
  1414.           beivf#=0
  1415.           PRINT AT(6,24);SPC(70)
  1416.           PRINT AT(6,24);"Das ist die richtige Lösung !     [Taste drücken]"
  1417.           REPEAT
  1418.           UNTIL LEN(INKEY$)
  1419.           ALERT 1,"Die Antwort war falsch!|Trotzdem als richtig werten?",1,"Falsch|Richtig|Abbruch",b%
  1420.           IF b%=3
  1421.             ALERT 3,"Die letzte Vokabel als|richtig werten ?",1,"Nein|Ja",c%
  1422.             IF c%=1
  1423.               gesamtfehl#=gesamtfehl#+1
  1424.               status#(akt#)=status#(akt#)+1
  1425.               EXIT IF 1
  1426.             ELSE
  1427.               topf#=topf#-1
  1428.               EXIT IF 1
  1429.             ENDIF
  1430.           ENDIF
  1431.           IF b%=1
  1432.             gesamtfehl#=gesamtfehl#+1
  1433.             status#(akt#)=status#(akt#)+1
  1434.           ENDIF
  1435.           IF b%=2
  1436.             drin#(akt#)=0
  1437.             topf#=topf#-1
  1438.           ENDIF
  1439.           PRINT AT(6,24);SPC(70)
  1440.         ENDIF
  1441.       ENDIF
  1442.       PRINT AT(21,21);SPC(4)
  1443.       PRINT AT(21,21);gesamtfehl#
  1444.       IF PEEK(XBIOS(32,L:-1))=96 AND musik#=1
  1445.         ~XBIOS(32,L:musikadresse%)
  1446.       ENDIF
  1447.     UNTIL topf#=0
  1448.     PRINT AT(6,24);SPC(70)
  1449.     IF lanaus%=2
  1450.       PRINT AT(6,24);MID$(laufschrift$,73,70)
  1451.     ENDIF
  1452.     clervok
  1453.     showvok(3)
  1454.     MENU 43,3
  1455.     PRINT AT(21,21);SPC(4)
  1456.     PRINT AT(21,21);gesamtfehl#
  1457.     DEFFILL ,0,0
  1458.     PBOX 519,29,601,111
  1459.   ENDIF
  1460.   '
  1461.   IF MENU(5)=49
  1462.     gesamtfehl#=0
  1463.     PRINT AT(21,21);SPC(4)
  1464.     eing1$="@"
  1465.     eing2$="@"
  1466.     eing3$="@"
  1467.     topf#=0
  1468.     FOR n#=1 TO lins#
  1469.       IF us#(n#)=1
  1470.         drin#(n#)=1
  1471.         topf#=topf#+1
  1472.       ELSE
  1473.         drin#(n#)=0
  1474.       ENDIF
  1475.     NEXT n#
  1476.     FOR n#=1 TO lins#
  1477.       IF drin#(n#)=1
  1478.         status#(n#)=0
  1479.       ENDIF
  1480.     NEXT n#
  1481.     ablins#=0
  1482.     REPEAT
  1483.       REPEAT
  1484.         akt#=1+RANDOM(lins#)
  1485.       UNTIL drin#(akt#)=1
  1486.       ablins#=ablins#+1
  1487.       clervok
  1488.       showvok(2)
  1489.       PRINT AT(6,24);SPC(70)
  1490.       IF topf#=1
  1491.         PRINT AT(6,24);"Dies ist die letzte Vokabel!"
  1492.       ELSE
  1493.         PRINT AT(6,24);" Es werden noch ";topf#;" Vokabeln abgefragt."
  1494.       ENDIF
  1495.       PRINT AT(7,9);
  1496.       FORM INPUT 60,eing1$
  1497.       spacweg(eing1$,back$)
  1498.       eing1$=back$
  1499.       IF allerichtig%=2
  1500.         bedeutung1#=0
  1501.         bedeutung2#=0
  1502.         bedeutung3#=0
  1503.         IF lin1$(akt#,2)<>""
  1504.           PRINT AT(7,10);
  1505.           FORM INPUT 60,eing2$
  1506.           spacweg(eing2$,back$)
  1507.           eing2$=back$
  1508.         ELSE
  1509.           bedeutung2#=1
  1510.         ENDIF
  1511.         IF lin1$(akt#,3)<>""
  1512.           PRINT AT(7,11);
  1513.           FORM INPUT 60,eing3$
  1514.           spacweg(eing3$,back$)
  1515.           eing3$=back$
  1516.         ELSE
  1517.           bedeutung3#=1
  1518.         ENDIF
  1519.         PRINT AT(6,24);SPC(70)
  1520.         IF eing1$="" OR eing2$="" OR eing3$=""
  1521.           eing1$="@"
  1522.           eing2$="@"
  1523.           eing3$="@"
  1524.           GOTO g1
  1525.         ENDIF
  1526.         IF grber%=1
  1527.           IF eing1$=lin1$(akt#,1)
  1528.             bedeutung1#=1
  1529.           ENDIF
  1530.           IF eing1$=lin1$(akt#,2)
  1531.             bedeutung1#=2
  1532.           ENDIF
  1533.           IF eing1$=lin1$(akt#,3)
  1534.             bedeutung1#=3
  1535.           ENDIF
  1536.           IF eing2$=lin1$(akt#,1) AND bedeutung1#<>1
  1537.             bedeutung2#=1
  1538.           ENDIF
  1539.           IF eing2$=lin1$(akt#,2) AND bedeutung1#<>2
  1540.             bedeutung2#=2
  1541.           ENDIF
  1542.           IF eing2$=lin1$(akt#,3) AND bedeutung1#<>3
  1543.             bedeutung2#=3
  1544.           ENDIF
  1545.           IF eing3$=lin1$(akt#,1) AND bedeutung1#<>1 AND bedeutung2#<>1
  1546.             bedeutung3#=1
  1547.           ENDIF
  1548.           IF eing3$=lin1$(akt#,2) AND bedeutung1#<>2 AND bedeutung2#<>2
  1549.             bedeutung3#=2
  1550.           ENDIF
  1551.           IF eing3$=lin1$(akt#,3) AND bedeutung1#<>3 AND bedeutung2#<>3
  1552.             bedeutung3#=3
  1553.           ENDIF
  1554.         ELSE
  1555.           IF UPPER$(eing1$)=UPPER$(lin1$(akt#,1))
  1556.             bedeutung1#=1
  1557.           ENDIF
  1558.           IF UPPER$(eing1$)=UPPER$(lin1$(akt#,2))
  1559.             bedeutung1#=2
  1560.           ENDIF
  1561.           IF UPPER$(eing1$)=UPPER$(lin1$(akt#,3))
  1562.             bedeutung1#=3
  1563.           ENDIF
  1564.           IF UPPER$(eing2$)=UPPER$(lin1$(akt#,1)) AND bedeutung1#<>1
  1565.             bedeutung2#=1
  1566.           ENDIF
  1567.           IF UPPER$(eing2$)=UPPER$(lin1$(akt#,2)) AND bedeutung1#<>2
  1568.             bedeutung2#=2
  1569.           ENDIF
  1570.           IF UPPER$(eing2$)=UPPER$(lin1$(akt#,3)) AND bedeutung1#<>3
  1571.             bedeutung2#=3
  1572.           ENDIF
  1573.           IF UPPER$(eing3$)=UPPER$(lin1$(akt#,1)) AND bedeutung1#<>1 AND bedeutung2#<>1
  1574.             bedeutung3#=1
  1575.           ENDIF
  1576.           IF UPPER$(eing3$)=UPPER$(lin1$(akt#,2)) AND bedeutung1#<>2 AND bedeutung2#<>2
  1577.             bedeutung3#=2
  1578.           ENDIF
  1579.           IF UPPER$(eing3$)=UPPER$(lin1$(akt#,3)) AND bedeutung1#<>3 AND bedeutung2#<>3
  1580.             bedeutung3#=3
  1581.           ENDIF
  1582.         ENDIF
  1583.         IF bedeutung1#>0 AND bedeutung2#>0 AND bedeutung3#>0
  1584.           PUT 520,30,sym2$
  1585.           topf#=topf#-1
  1586.           PRINT AT(7,12);SPC(60)
  1587.           PRINT AT(7,12);anm1$(akt#)
  1588.           PRINT AT(6,24);SPC(70)
  1589.           PRINT AT(6,24);"  BRAVO !  Alles richtig !!     (Taste drücken; ESC für Abbruch)"
  1590.           drin#(akt#)=0
  1591.           REPEAT
  1592.             a$=INKEY$
  1593.           UNTIL LEN(a$)
  1594.           IF a$=CHR$(27)
  1595.             EXIT IF 1
  1596.           ENDIF
  1597.           PRINT AT(6,24);SPC(70)
  1598.         ELSE
  1599.         g1:
  1600.           PUT 520,30,sym1$
  1601.           PRINT AT(6,24);SPC(70)
  1602.           PRINT AT(6,24);"  Das ist leider nicht ganz richtig. (Taste drücken)"
  1603.           REPEAT
  1604.           UNTIL LEN(INKEY$)
  1605.           clervok
  1606.           showvok(3)
  1607.           PRINT AT(6,24);SPC(70)
  1608.           PRINT AT(6,24);"Das ist die richtige Lösung !     [Taste drücken]"
  1609.           REPEAT
  1610.           UNTIL LEN(INKEY$)
  1611.           ALERT 1,"Die Antwort war falsch!|Trotzdem als richtig werten?",1,"Falsch|Richtig|Abbruch",b%
  1612.           IF b%=3
  1613.             ALERT 3,"Die letzte Vokabel als|richtig werten ?",1,"Nein|Ja",c%
  1614.             IF c%=1
  1615.               gesamtfehl#=gesamtfehl#+1
  1616.               status#(akt#)=status#(akt#)+1
  1617.               EXIT IF 1
  1618.             ELSE
  1619.               topf#=topf#-1
  1620.               EXIT IF 1
  1621.             ENDIF
  1622.           ENDIF
  1623.           IF b%=1
  1624.             gesamtfehl#=gesamtfehl#+1
  1625.             status#(akt#)=status#(akt#)+1
  1626.           ENDIF
  1627.           IF b%=2
  1628.             drin#(akt#)=0
  1629.             topf#=topf#-1
  1630.           ENDIF
  1631.           PRINT AT(6,24);SPC(70)
  1632.         ENDIF
  1633.       ELSE
  1634.         PRINT AT(6,24);SPC(70)
  1635.         IF eing1$=""
  1636.           eing1$="@"
  1637.           GOTO g2
  1638.         ENDIF
  1639.         bedeutung1#=0
  1640.         IF grber%=1
  1641.           IF eing1$=lin1$(akt#,1) OR eing1$=lin1$(akt#,2) OR eing1$=lin1$(akt#,3)
  1642.             bedeutung1#=1
  1643.           ENDIF
  1644.         ELSE
  1645.           IF UPPER$(eing1$)=UPPER$(lin1$(akt#,1)) OR UPPER$(eing1$)=UPPER$(lin1$(akt#,2)) OR UPPER$(eing1$)=UPPER$(lin1$(akt#,3))
  1646.             bedeutung1#=1
  1647.           ENDIF
  1648.         ENDIF
  1649.         IF bedeutung1#=1
  1650.           PUT 520,30,sym3$
  1651.           topf#=topf#-1
  1652.           PRINT AT(6,24);SPC(70)
  1653.           PRINT AT(6,24);"        Richtig !       (Taste drücken; ESC für Abbruch)"
  1654.           drin#(akt#)=0
  1655.           clervok
  1656.           showvok(3)
  1657.           REPEAT
  1658.             a$=INKEY$
  1659.           UNTIL LEN(a$)
  1660.           IF a$=CHR$(27)
  1661.             EXIT IF 1
  1662.           ENDIF
  1663.           PRINT AT(6,24);SPC(70)
  1664.         ELSE
  1665.         g2:
  1666.           PUT 520,30,sym1$
  1667.           PRINT AT(6,24);SPC(70)
  1668.           PRINT AT(6,24);"  Das ist leider falsch ! (Taste drücken)"
  1669.           REPEAT
  1670.           UNTIL LEN(INKEY$)
  1671.           clervok
  1672.           showvok(3)
  1673.           PRINT AT(6,24);SPC(70)
  1674.           PRINT AT(6,24);"Das ist die richtige Lösung !     [Taste drücken]"
  1675.           REPEAT
  1676.           UNTIL LEN(INKEY$)
  1677.           ALERT 1,"Die Antwort war falsch!|Trotzdem als richtig werten?",1,"Falsch|Richtig|Abbruch",b%
  1678.           IF b%=3
  1679.             ALERT 3,"Die letzte Vokabel als|richtig werten ?",1,"Nein|Ja",c%
  1680.             IF c%=1
  1681.               gesamtfehl#=gesamtfehl#+1
  1682.               status#(akt#)=status#(akt#)+1
  1683.               EXIT IF 1
  1684.             ELSE
  1685.               topf#=topf#-1
  1686.               EXIT IF 1
  1687.             ENDIF
  1688.           ENDIF
  1689.           IF b%=1
  1690.             gesamtfehl#=gesamtfehl#+1
  1691.             status#(akt#)=status#(akt#)+1
  1692.           ENDIF
  1693.           IF b%=2
  1694.             drin#(akt#)=0
  1695.             topf#=topf#-1
  1696.           ENDIF
  1697.           PRINT AT(6,24);SPC(70)
  1698.         ENDIF
  1699.       ENDIF
  1700.       PRINT AT(21,21);SPC(4)
  1701.       PRINT AT(21,21);gesamtfehl#
  1702.       IF PEEK(XBIOS(32,L:-1))=96 AND musik#=1
  1703.         ~XBIOS(32,L:musikadresse%)
  1704.       ENDIF
  1705.     UNTIL topf#=0
  1706.     PRINT AT(6,24);SPC(70)
  1707.     IF lanaus%=2
  1708.       PRINT AT(6,24);MID$(laufschrift$,73,70)
  1709.     ENDIF
  1710.     clervok
  1711.     showvok(3)
  1712.     MENU 43,3
  1713.     PRINT AT(21,21);SPC(4)
  1714.     PRINT AT(21,21);gesamtfehl#
  1715.     DEFFILL ,0,0
  1716.     PBOX 519,29,601,111
  1717.   ENDIF
  1718.   '
  1719.   IF MENU(5)=50
  1720.     IF hilfe#=0
  1721.       ALERT 1,"   |    |    |Die Hilfest. ist jetzt an.",1,"Ok",dummy#
  1722.       hilfe#=1
  1723.       MENU 31,1
  1724.     ELSE
  1725.       ALERT 1,"Die Hilfestellung ist jetzt|ausgeschaltet .",1,"Ok",dummy#
  1726.       hilfe#=0
  1727.       MENU 31,0
  1728.     ENDIF
  1729.   ENDIF
  1730.   '
  1731.   IF MENU(5)=52
  1732.     diain("Goto Vokabel Nr.:",4,back$)
  1733.     IF VAL(back$)>0 AND VAL(back$)<lins#+1
  1734.       akt#=VAL(back$)
  1735.       clervok
  1736.       showvok(3)
  1737.     ENDIF
  1738.   ENDIF
  1739.   '
  1740.   IF MENU(5)=53
  1741.     ALERT 2,"Die Vokabel wirklich löschen ?",0,"Ja|Nein",a%
  1742.     IF a%=2
  1743.       GOTO weg
  1744.     ENDIF
  1745.     IF akt#=lins#
  1746.       lin1$(akt#,1)=""
  1747.       lin1$(akt#,2)=""
  1748.       lin1$(akt#,3)=""
  1749.       anm1$(akt#)=""
  1750.       lin2$(akt#,1)=""
  1751.       lin2$(akt#,2)=""
  1752.       lin2$(akt#,3)=""
  1753.       anm2$(akt#)=""
  1754.       status#(akt#)=0
  1755.       us#(akt#)=1
  1756.       akt#=akt#-1
  1757.       lins#=lins#-1
  1758.     ELSE
  1759.       FOR i#=akt# TO lins#-1
  1760.         lin1$(i#,1)=lin1$(i#+1,1)
  1761.         lin1$(i#,2)=lin1$(i#+1,2)
  1762.         lin1$(i#,3)=lin1$(i#+1,3)
  1763.         anm1$(i#)=anm1$(i#+1)
  1764.         lin2$(i#,1)=lin2$(i#+1,1)
  1765.         lin2$(i#,2)=lin2$(i#+1,2)
  1766.         lin2$(i#,3)=lin2$(i#+1,3)
  1767.         anm2$(i#)=anm2$(i#+1)
  1768.         status#(i#)=status#(i#+1)
  1769.         us#(i#)=us#(i#+1)
  1770.       NEXT i#
  1771.       lin1$(lins#,1)=""
  1772.       lin1$(lins#,2)=""
  1773.       lin1$(lins#,3)=""
  1774.       anm1$(lins#)=""
  1775.       lin2$(lins#,1)=""
  1776.       lin2$(lins#,2)=""
  1777.       lin2$(lins#,3)=""
  1778.       anm2$(lins#)=""
  1779.       lins#=lins#-1
  1780.       status#(lins#)=0
  1781.       us#(lins#)=1
  1782.     ENDIF
  1783.     MENU 19,3
  1784.     clervok
  1785.     showvok(3)
  1786.   ENDIF
  1787.   '
  1788.   IF MENU(5)=54
  1789.     ALERT 2,"Die aktuelle Vokabel ersetzen?",2,"Ja|Nein",a%
  1790.     IF a%=2
  1791.       GOTO weg
  1792.     ENDIF
  1793.     clervok
  1794.     PRINT AT(14,4);akt#
  1795.     PRINT AT(7,9);
  1796.     FORM INPUT 60,a$
  1797.     spacweg(a$,back$)
  1798.     IF back$=""
  1799.       showvok(3)
  1800.       GOTO weg
  1801.     ENDIF
  1802.     lin1$(akt#,1)=back$
  1803.     PRINT AT(7,10);
  1804.     FORM INPUT 60,lin1$(akt#,2)
  1805.     spacweg(lin1$(akt#,2),back$)
  1806.     lin1$(akt#,2)=back$
  1807.     PRINT AT(7,11);
  1808.     FORM INPUT 60,lin1$(akt#,3)
  1809.     spacweg(lin1$(akt#,3),back$)
  1810.     lin1$(akt#,3)=back$
  1811.     PRINT AT(7,12);
  1812.     FORM INPUT 60,anm1$(akt#)
  1813.     IF anm1$(akt#)<>SPACE$(LEN(anm1$(akt#)))
  1814.       anm1$(akt#)=TRIM$(anm1$(akt#))
  1815.     ELSE
  1816.       anm1$(akt#)=""
  1817.     ENDIF
  1818.   g6:
  1819.     PRINT AT(7,16);
  1820.     FORM INPUT 60,lin2$(akt#,1)
  1821.     spacweg(lin2$(akt#,1),back$)
  1822.     IF back$=""
  1823.       GOTO g6
  1824.     ENDIF
  1825.     lin2$(akt#,1)=back$
  1826.     PRINT AT(7,17);
  1827.     FORM INPUT 60,lin2$(akt#,2)
  1828.     spacweg(lin2$(akt#,2),back$)
  1829.     lin2$(akt#,2)=back$
  1830.     PRINT AT(7,18);
  1831.     FORM INPUT 60,lin2$(akt#,3)
  1832.     spacweg(lin2$(akt#,3),back$)
  1833.     lin2$(akt#,3)=back$
  1834.     PRINT AT(7,19);
  1835.     FORM INPUT 60,anm2$(akt#)
  1836.     IF anm2$(akt#)<>SPACE$(LEN(anm2$(akt#)))
  1837.       anm2$(akt#)=TRIM$(anm2$(akt#))
  1838.     ELSE
  1839.       anm2$(akt#)=""
  1840.     ENDIF
  1841.     status#(akt#)=0
  1842.     us#(akt#)=1
  1843.   ENDIF
  1844.   '
  1845.   IF MENU(5)=55
  1846.     ALERT 2,"Die aktuelle Vokabel editieren?",1,"Ja|Nein",a%
  1847.     IF a%=2
  1848.       GOTO weg
  1849.     ENDIF
  1850.     PRINT AT(14,4);akt#
  1851.     PRINT AT(7,9);
  1852.     a$=lin1$(akt#,1)
  1853.     FORM INPUT 60 AS a$
  1854.     spacweg(a$,back$)
  1855.     IF back$=""
  1856.       showvok(3)
  1857.       GOTO weg
  1858.     ENDIF
  1859.     lin1$(akt#,1)=back$
  1860.     PRINT AT(7,10);
  1861.     FORM INPUT 60 AS lin1$(akt#,2)
  1862.     spacweg(lin1$(akt#,2),back$)
  1863.     lin1$(akt#,2)=back$
  1864.     PRINT AT(7,11);
  1865.     FORM INPUT 60 AS lin1$(akt#,3)
  1866.     spacweg(lin1$(akt#,3),back$)
  1867.     lin1$(akt#,3)=back$
  1868.     PRINT AT(7,12);
  1869.     FORM INPUT 60 AS anm1$(akt#)
  1870.     IF anm1$(akt#)<>SPACE$(LEN(anm1$(akt#)))
  1871.       anm1$(akt#)=TRIM$(anm1$(akt#))
  1872.     ELSE
  1873.       anm1$(akt#)=""
  1874.     ENDIF
  1875.   g7:
  1876.     PRINT AT(7,16);
  1877.     FORM INPUT 60 AS lin2$(akt#,1)
  1878.     spacweg(lin2$(akt#,1),back$)
  1879.     IF back$=""
  1880.       GOTO g7
  1881.     ENDIF
  1882.     lin2$(akt#,1)=back$
  1883.     PRINT AT(7,17);
  1884.     FORM INPUT 60 AS lin2$(akt#,2)
  1885.     spacweg(lin2$(akt#,2),back$)
  1886.     lin2$(akt#,2)=back$
  1887.     PRINT AT(7,18);
  1888.     FORM INPUT 60 AS lin2$(akt#,3)
  1889.     spacweg(lin2$(akt#,3),back$)
  1890.     lin2$(akt#,3)=back$
  1891.     PRINT AT(7,19);
  1892.     FORM INPUT 60 AS anm2$(akt#)
  1893.     IF anm2$(akt#)<>SPACE$(LEN(anm2$(akt#)))
  1894.       anm2$(akt#)=TRIM$(anm2$(akt#))
  1895.     ELSE
  1896.       anm2$(akt#)=""
  1897.     ENDIF
  1898.   ENDIF
  1899.   '
  1900.   IF MENU(5)=57
  1901.     IF lins#=0
  1902.       GOTO weg
  1903.     ENDIF
  1904.     IF NOT OUT?(0)
  1905.       ALERT 3,"Drucker nicht ansprechbar!",1,"Abbruch",dummy%
  1906.       GOTO weg
  1907.     ENDIF
  1908.     ALERT 2,"Ausdruck von Vokabeln:",1,"Alle|gewählte",pr%
  1909.     ALERT 3,"Druckerpapier:            ",1,"Endlos|Einzel|Abbruch",papierart#
  1910.     IF papierart#=3
  1911.       GOTO weg
  1912.     ENDIF
  1913.     MENU KILL
  1914.     SGET hi$
  1915.     DEFFILL ,0,0
  1916.     PBOX 150,125,450,275
  1917.     BOX 152,127,448,273
  1918.     IF LEN(lad$)
  1919.       PRINT AT(23,10);"Ausdruck von ";RIGHT$(lad$,LEN(lad$)-RINSTR(lad$,"\"))
  1920.     ELSE
  1921.       PRINT AT(23,10);"Ausdruck von Vokabeln"
  1922.     ENDIF
  1923.     PRINT AT(27,12);"Drucke Vokabel : "
  1924.     PRINT AT(27,14);"Drucke Seite : 1"
  1925.     PRINT AT(23,16);"   Abbruch mit der Taste <S>"
  1926.     LPRINT TAB((79-LEN(MID$(lek$,73)))/2);lek$
  1927.     LPRINT
  1928.     PAUSE 100
  1929.     seite#=1
  1930.     LPRINT "Nr.:";TAB(6);"Deutsch:";TAB(41);fremdspr$;":";TAB(70);"Seite ";seite#
  1931.     LPRINT
  1932.     PAUSE 100
  1933.     FOR i#=1 TO lins#
  1934.       IF pr%=2 AND us#(i#)=0
  1935.         GOTO weiter
  1936.       ENDIF
  1937.       PRINT AT(44,12);i#
  1938.       LPRINT i#;
  1939.       deu$=lin1$(i#,1)
  1940.       IF LEN(lin1$(i#,2))
  1941.         deu$=deu$+" / "+lin1$(i#,2)
  1942.       ENDIF
  1943.       IF LEN(lin1$(i#,3))
  1944.         deu$=deu$+" / "+lin1$(i#,3)
  1945.       ENDIF
  1946.       IF LEN(anm1$(i#))
  1947.         deu$=deu$+" ("+anm1$(i#)+")"
  1948.       ENDIF
  1949.       engl$=lin2$(i#,1)
  1950.       IF LEN(lin2$(i#,2))
  1951.         engl$=engl$+" / "+lin2$(i#,2)
  1952.       ENDIF
  1953.       IF LEN(lin2$(i#,3))
  1954.         engl$=engl$+" / "+lin2$(i#,3)
  1955.       ENDIF
  1956.       IF LEN(anm2$(i#))
  1957.         engl$=engl$+" ("+anm2$(i#)+")"
  1958.       ENDIF
  1959.       deuz#=1
  1960.       englz#=1
  1961.       REPEAT
  1962.         IF deuz#<=LEN(deu$)
  1963.           IF LEN(MID$(deu$,deuz#))>30
  1964.             w#=MAX(RINSTR(MID$(deu$,deuz#,30)," "),RINSTR(MID$(deu$,deuz#,30),","))
  1965.             IF w#=0
  1966.               w#=30
  1967.               deuz#=deuz#+30
  1968.             ELSE
  1969.               deuz#=deuz#+w#
  1970.             ENDIF
  1971.             LPRINT TAB(6);MID$(deu$,deuz#-w#,w#);
  1972.           ELSE
  1973.             LPRINT TAB(6);MID$(deu$,deuz#);
  1974.             deuz#=LEN(deu$)+1
  1975.           ENDIF
  1976.         ENDIF
  1977.         IF englz#<=LEN(engl$)
  1978.           IF LEN(MID$(engl$,englz#))>30
  1979.             w#=MAX(RINSTR(MID$(engl$,englz#,30)," "),RINSTR(MID$(engl$,englz#,30),","))
  1980.             IF w#=0
  1981.               w#=30
  1982.               englz#=englz#+30
  1983.             ELSE
  1984.               englz#=englz#+w#
  1985.             ENDIF
  1986.             LPRINT TAB(41);MID$(engl$,englz#-w#,w#)
  1987.             PAUSE 70
  1988.           ELSE
  1989.             LPRINT TAB(41);MID$(engl$,englz#)
  1990.             PAUSE 70
  1991.             englz#=LEN(engl$)+1
  1992.           ENDIF
  1993.         ELSE
  1994.           LPRINT
  1995.           PAUSE 70
  1996.         ENDIF
  1997.       UNTIL deuz#>LEN(deu$) AND englz#>LEN(engl$)
  1998.       IF abort#=1
  1999.         abort#=0
  2000.         EXIT IF 1
  2001.       ENDIF
  2002.       IF i#>49 AND MOD(i#,50)=0
  2003.         IF papierart#=1
  2004.           IF OUT?(0)=FALSE
  2005.             ALERT 3,"Drucker meldet sich nicht!",1,"Weiter|Abbruch",a%
  2006.             IF a%=2
  2007.               EXIT IF 1
  2008.             ENDIF
  2009.           ENDIF
  2010.           FOR n#=1 TO 15
  2011.             LPRINT
  2012.           NEXT n#
  2013.           PAUSE 200
  2014.         ELSE
  2015.           ALERT 3,"Bitte neues Blatt Papier|einspannen !",1,"Weiter",dummy%
  2016.         ENDIF
  2017.         LET seite#=seite#+1
  2018.         PRINT AT(42,14);seite#
  2019.         IF OUT?(0)=FALSE
  2020.           ALERT 3,"Drucker meldet sich nicht!",1,"Weiter|Abbruch",a%
  2021.           IF a%=2
  2022.             EXIT IF 1
  2023.           ENDIF
  2024.         ENDIF
  2025.         LPRINT "Nr.:";TAB(6);"Deutsch:";TAB(41);fremdspr$;":";TAB(70);"Seite ";seite#
  2026.         LPRINT
  2027.         PAUSE 100
  2028.       ENDIF
  2029.       a$=INKEY$
  2030.       IF UPPER$(a$)="S"
  2031.         ALERT 3,"Ausdruck angehalten!",1,"Weiter|Abbruch",a%
  2032.         IF a%=2
  2033.           EXIT IF 1
  2034.         ENDIF
  2035.         REPEAT
  2036.         UNTIL INKEY$=""
  2037.       ENDIF
  2038.     weiter:
  2039.     NEXT i#
  2040.     SPUT hi$
  2041.     MENU menu$()
  2042.     IF gesamtfehl#=0
  2043.       MENU 43,2
  2044.     ENDIF
  2045.     MENU 44,2
  2046.     IF lanaus%=1
  2047.       MENU 56,1
  2048.     ENDIF
  2049.     IF grber%=1
  2050.       MENU 45,1
  2051.     ENDIF
  2052.   ENDIF
  2053.   '
  2054.   IF MENU(5)=56
  2055.     IF lins#=0
  2056.       GOTO weg
  2057.     ENDIF
  2058.     MENU KILL
  2059.     SGET hi$
  2060.     CLS
  2061.     PRINT AT((79-LEN(MID$(lek$,73)))/2,1);lek$
  2062.     PRINT
  2063.     FOR i#=1 TO lins#
  2064.       PRINT i#;
  2065.       deu$=lin1$(i#,1)
  2066.       IF LEN(lin1$(i#,2))
  2067.         deu$=deu$+" / "+lin1$(i#,2)
  2068.       ENDIF
  2069.       IF LEN(lin1$(i#,3))
  2070.         deu$=deu$+" / "+lin1$(i#,3)
  2071.       ENDIF
  2072.       IF LEN(anm1$(i#))
  2073.         deu$=deu$+" ("+anm1$(i#)+")"
  2074.       ENDIF
  2075.       engl$=lin2$(i#,1)
  2076.       IF LEN(lin2$(i#,2))
  2077.         engl$=engl$+" / "+lin2$(i#,2)
  2078.       ENDIF
  2079.       IF LEN(lin2$(i#,3))
  2080.         engl$=engl$+" / "+lin2$(i#,3)
  2081.       ENDIF
  2082.       IF LEN(anm2$(i#))
  2083.         engl$=engl$+" ("+anm2$(i#)+")"
  2084.       ENDIF
  2085.       deuz#=1
  2086.       englz#=1
  2087.       REPEAT
  2088.         IF deuz#<=LEN(deu$)
  2089.           IF LEN(MID$(deu$,deuz#))>30
  2090.             w#=MAX(RINSTR(MID$(deu$,deuz#,30)," "),RINSTR(MID$(deu$,deuz#,30),","))
  2091.             IF w#=0
  2092.               w#=30
  2093.               deuz#=deuz#+30
  2094.             ELSE
  2095.               deuz#=deuz#+w#
  2096.             ENDIF
  2097.             PRINT TAB(6);MID$(deu$,deuz#-w#,w#);
  2098.           ELSE
  2099.             PRINT TAB(6);MID$(deu$,deuz#);
  2100.             deuz#=LEN(deu$)+1
  2101.           ENDIF
  2102.         ENDIF
  2103.         IF englz#<=LEN(engl$)
  2104.           IF LEN(MID$(engl$,englz#))>30
  2105.             w#=MAX(RINSTR(MID$(engl$,englz#,30)," "),RINSTR(MID$(engl$,englz#,30),","))
  2106.             IF w#=0
  2107.               w#=30
  2108.               englz#=englz#+30
  2109.             ELSE
  2110.               englz#=englz#+w#
  2111.             ENDIF
  2112.             PRINT TAB(41);MID$(engl$,englz#-w#,w#)
  2113.           ELSE
  2114.             PRINT TAB(41);MID$(engl$,englz#)
  2115.             englz#=LEN(engl$)+1
  2116.           ENDIF
  2117.         ELSE
  2118.           PRINT
  2119.         ENDIF
  2120.       UNTIL deuz#>LEN(deu$) AND englz#>LEN(engl$)
  2121.       IF i#>14 AND MOD(i#,15)=0
  2122.         REPEAT
  2123.           a$=INKEY$
  2124.         UNTIL LEN(a$)
  2125.         EXIT IF UPPER$(a$)="Q"
  2126.       ENDIF
  2127.     NEXT i#
  2128.     IF UPPER$(a$)<>"Q"
  2129.       REPEAT
  2130.       UNTIL LEN(INKEY$)
  2131.     ENDIF
  2132.     SPUT hi$
  2133.     MENU menu$()
  2134.     IF gesamtfehl#=0
  2135.       MENU 43,2
  2136.     ENDIF
  2137.     MENU 44,2
  2138.     IF lanaus%=1
  2139.       MENU 56,1
  2140.     ENDIF
  2141.     IF grber%=1
  2142.       MENU 45,1
  2143.     ENDIF
  2144.   ENDIF
  2145.   '
  2146.   IF MENU(5)=58
  2147.     gef#=0
  2148.     ALERT 3,"Suchfunktion !    |Was soll durchsucht werden?",1,"Speicher|File|Disk",a%
  2149.     IF a%>1
  2150.       ALERT 1,"Leider in dieser Version|noch nicht möglich.",1,"Abbruch",dummy%
  2151.       GOTO weg
  2152.     ENDIF
  2153.     IF lins#=0
  2154.       ALERT 3,"Es befinden sich keine|Vokabeln im Speicher!",1,"Abbruch",dummy%
  2155.       GOTO weg
  2156.     ENDIF
  2157.     ALERT 2,"Nach was wird gesucht?",0,"Fremdsp.|Deutsch",b%
  2158.     IF b%=1
  2159.       x#=9
  2160.     ELSE
  2161.       x#=16
  2162.     ENDIF
  2163.     clervok
  2164.   g8:
  2165.     PRINT AT(7,x#);
  2166.     FORM INPUT 60,such$
  2167.     spacweg(such$,back$)
  2168.     IF back$=""
  2169.       ALERT 2,"HÄ?!              ",1,"OH|Weg hier",c%
  2170.       IF c%=2
  2171.         showvok(3)
  2172.         GOTO weg
  2173.       ENDIF
  2174.       GOTO g8
  2175.     ENDIF
  2176.     such$=back$
  2177.     FOR i#=1 TO lins#
  2178.       IF x#=9
  2179.         IF INSTR(UPPER$(lin1$(i#,1)),UPPER$(such$)) OR INSTR(UPPER$(lin1$(i#,2)),UPPER$(such$)) OR INSTR(UPPER$(lin1$(i#,3)),UPPER$(such$))
  2180.           gef#=1
  2181.           akt#=i#
  2182.           clervok
  2183.           showvok(3)
  2184.           REPEAT
  2185.           UNTIL LEN(INKEY$)
  2186.           ALERT 3,"Weitersuchen ?",1,"Ja,bitte| Nö ",d%
  2187.           IF d%=2
  2188.             EXIT IF 1
  2189.           ENDIF
  2190.           gef#=0
  2191.         ENDIF
  2192.       ELSE
  2193.         IF INSTR(UPPER$(lin2$(i#,1)),UPPER$(such$)) OR INSTR(UPPER$(lin2$(i#,2)),UPPER$(such$)) OR INSTR(UPPER$(lin2$(i#,3)),UPPER$(such$))
  2194.           gef#=1
  2195.           akt#=i#
  2196.           clervok
  2197.           showvok(3)
  2198.           REPEAT
  2199.           UNTIL LEN(INKEY$)
  2200.           ALERT 3,"Weitersuchen ?",1,"Ja,bitte| Nö ",d%
  2201.           IF d%=2
  2202.             EXIT IF 1
  2203.           ENDIF
  2204.           gef#=0
  2205.         ENDIF
  2206.       ENDIF
  2207.     NEXT i#
  2208.     IF gef#=0
  2209.       ALERT 1,"Keine Übersetzung gefunden.",1,"Schade",dummy%
  2210.     ENDIF
  2211.     clervok
  2212.     showvok(3)
  2213.   ENDIF
  2214.   '
  2215.   IF MENU(5)=60
  2216.     IF ablins#=0
  2217.       ALERT 3,"Keine Auswertung möglich",1,"Abbruch",dummy%
  2218.       MENU MENU(0),2
  2219.       GOTO weg
  2220.     ENDIF
  2221.     SGET hi$
  2222.     DEFFILL 1,1,1
  2223.     PBOX 55,55,595,355
  2224.     DEFFILL 1,2,3
  2225.     PBOX 50,50,590,350
  2226.     DEFFILL ,0,0
  2227.     PBOX 65,65,575,90
  2228.     DEFTEXT 1,1,0,15
  2229.     TEXT 70,83,500,"Es wurden "+STR$(ablins#)+" Vokabeln abgefragt"
  2230.     fehler#=gesamtfehl#
  2231.     IF fehler#>ablins#
  2232.       fehler#=ablins#
  2233.     ENDIF
  2234.     PBOX 65,105,350,290
  2235.     DEFFILL 1,2,2
  2236.     r%=(3600/ablins#)*(ablins#-fehler#)
  2237.     IF r%=0
  2238.       r%=1
  2239.     ENDIF
  2240.     PCIRCLE 208,198,80,900,900+r%
  2241.     DEFFILL 1,2,4
  2242.     PCIRCLE 208,198,80,900+r%,900
  2243.     TEXT 80,130,"Richtig"
  2244.     TEXT 90,150,STR$(ablins#-fehler#)
  2245.     TEXT 290,130,"Falsch"
  2246.     TEXT 305,150,STR$(fehler#)
  2247.     DEFFILL ,0,0
  2248.     PBOX 370,105,575,290
  2249.     DEFTEXT 1,1,0,15
  2250.     TEXT 385,130,175,"Sie haben also"
  2251.     DEFTEXT 1,3,0,26
  2252.     apr#=ROUND(((ablins#-fehler#)/ablins#)*100)
  2253.     TEXT 385,200,175,"   "+STR$(apr#)+"%   "
  2254.     DEFTEXT 1,1,0,15
  2255.     TEXT 385,270,175,"richtig beantwortet"
  2256.     PBOX 65,305,575,330
  2257.     DEFTEXT 1,0,0,13
  2258.     note$=""
  2259.     x#=0
  2260.     vorhera#=-1
  2261.     REPEAT
  2262.       RESTORE notedatas
  2263.       x#=x#+1
  2264.       FOR i#=1 TO x#
  2265.         READ a%
  2266.       NEXT i#
  2267.       IF apr#>vorhera# AND apr#<=a%
  2268.         RESTORE notdollar
  2269.         FOR i#=1 TO x#
  2270.           READ note$
  2271.         NEXT i#
  2272.       ENDIF
  2273.       vorhera#=a%
  2274.     UNTIL LEN(note$)
  2275.   notedatas:
  2276.     DATA 6,12,18,25,31,37,43,50,56,62,68,75,81,87,93,101
  2277.   notdollar:
  2278.     DATA "6","6+","5-","5","5+","4-","4","4+","3-","3","3+","2-","2","2+","1-","1"
  2279.     TEXT 70,323,500," Bewertung nach dem deutschen Notensystem : "+note$+" "
  2280.     REPEAT
  2281.     UNTIL LEN(INKEY$)
  2282.     SPUT hi$
  2283.   ENDIF
  2284.   '
  2285.   IF MENU(5)=62
  2286.     ALERT 3,"Soll die Großschreibung|berücksichtigt werden?",1,"Ja|Nein",g%
  2287.     IF g%=1
  2288.       grber%=1
  2289.       MENU MENU(0),1
  2290.     ELSE
  2291.       grber%=0
  2292.       MENU MENU(0),0
  2293.     ENDIF
  2294.   ENDIF
  2295.   '
  2296.   IF MENU(5)=63
  2297.     diain("Fremdsprache :",12,back$)
  2298.     IF back$=SPACE$(LEN(back$))
  2299.       back$=""
  2300.     ENDIF
  2301.     IF LEN(back$)
  2302.       fremdspr$=back$
  2303.       PRINT AT(6,14);SPC(13)
  2304.       PRINT AT(6,14);fremdspr$;":"
  2305.     ENDIF
  2306.   ENDIF
  2307.   '
  2308.   IF MENU(5)=64
  2309.     diain("Lektionsname :",60,back$)
  2310.     IF back$=SPACE$(LEN(back$))
  2311.       back$=""
  2312.     ENDIF
  2313.     IF LEN(back$)
  2314.       PRINT AT(6,24);SPC(70)
  2315.       lek$=SPACE$(72)+back$+" "
  2316.       laufschrift$=lek$
  2317.       IF lanaus%=2
  2318.         PRINT AT(6,24);"     ";MID$(laufschrift$,73)
  2319.       ENDIF
  2320.     ENDIF
  2321.   ENDIF
  2322.   '
  2323.   IF MENU(5)=65
  2324.     DEFTEXT 1,0,0,13
  2325.     SGET hi$
  2326.     TITLEW #1,"Funktionstastenbelegung"
  2327.     OPENW #1,120,30,350,360,9
  2328.     CLS
  2329.     keylist
  2330.     REPEAT
  2331.       MOUSE x#,y#,k#
  2332.       IF x#>0 AND x#<350 AND y#>0 AND y#<320 AND k#=1
  2333.         ft%=y#/16+1
  2334.         defkey$=CHAR{BASEPAGE+ftastenspeicher%+(ft%-1)*32}
  2335.         PRINT AT(10,ft%);SPC(33)
  2336.         PRINT AT(10,ft%);
  2337.         FORM INPUT 31 AS defkey$
  2338.         IF defkey$<>SPACE$(LEN(defkey$))
  2339.           KEYDEF ft%,defkey$
  2340.         ENDIF
  2341.         defkey$=CHAR{BASEPAGE+ftastenspeicher%+(ft%-1)*32}
  2342.         PRINT AT(10,ft%);SPC(33)
  2343.         PRINT AT(10,ft%);CHR$(34);defkey$;CHR$(34)
  2344.       ENDIF
  2345.     UNTIL LEN(INKEY$)
  2346.     CLOSEW 1
  2347.     CLOSEW 0
  2348.     SPUT hi$
  2349.   ENDIF
  2350.   '
  2351.   IF MENU(5)=66
  2352.     FILESELECT "\*.FTA","SETUP.FTA",backvar$
  2353.     IF backvar$="" OR backvar$="\"
  2354.       GOTO weg
  2355.     ENDIF
  2356.     ON ERROR GOSUB fehl
  2357.     OPEN "U",#1,backvar$
  2358.     FOR i#=1 TO 20
  2359.       ON ERROR GOSUB fehl
  2360.       INPUT #1,a$
  2361.       KEYDEF i#,a$
  2362.     NEXT i#
  2363.     CLOSE
  2364.   ENDIF
  2365.   '
  2366.   IF MENU(5)=67
  2367.     FILESELECT "\*.FTA","",speichervar$
  2368.     IF speichervar$="" OR speichervar$="\"
  2369.       GOTO weg
  2370.     ENDIF
  2371.     IF EXIST(speichervar$)
  2372.       ALERT 3,"Datei existiert schon!",1,"Ersetzen|Abbruch",a%
  2373.       IF a%=2
  2374.         GOTO weg
  2375.       ENDIF
  2376.       KILL speichervar$
  2377.     ENDIF
  2378.     OPEN "O",#1,speichervar$
  2379.     FOR i#=1 TO 20
  2380.       defkey$=CHAR{BASEPAGE+ftastenspeicher%+(i#-1)*32}
  2381.       ON ERROR GOSUB fehl
  2382.       PRINT #1,defkey$
  2383.     NEXT i#
  2384.     CLOSE
  2385.   ENDIF
  2386.   '
  2387.   IF MENU(5)=68
  2388.     SGET hi$
  2389.     ~GRAF_GROWBOX(320,200,0,0,120,50,400,300)
  2390.     DEFFILL 1,1,1
  2391.     PBOX 125,55,525,355
  2392.     DEFFILL ,0,0
  2393.     PBOX 120,50,520,350
  2394.     PRINT AT(18,5);"                Einstellungen"
  2395.     PRINT AT(18,6);"                -------------"
  2396.     PRINT AT(18,8);"    Bei der Abfrage..."
  2397.     PRINT AT(18,10);"           ...braucht nur eine Bedeutung ge-"
  2398.     PRINT AT(18,11);"           wußt zu werden."
  2399.     PRINT AT(18,12);"           ...müssen alle Bedeutungen gewußt"
  2400.     PRINT AT(18,13);"           werden."
  2401.     PRINT AT(18,15);"   Sollen bei Vorkommen von unregelmaßigen eng-"
  2402.     PRINT AT(18,16);"  lischen Verben die anderen zwei Formen nach-"
  2403.     PRINT AT(18,17);"  gefragt werden ?"
  2404.     PRINT AT(18,19);"           Ja                 Nein"
  2405.     PRINT AT(18,21);"                     Ok"
  2406.     BOX 170,146,183,159
  2407.     BOX 170,174,183,187
  2408.     BOX 190,288,203,301
  2409.     BOX 330,288,343,301
  2410.     BOX 272,317,352,337
  2411.     DEFFILL 1,2,4
  2412.     IF allerichtig%=1
  2413.       PBOX 170,146,183,159
  2414.     ENDIF
  2415.     IF allerichtig%=2
  2416.       PBOX 170,174,183,187
  2417.     ENDIF
  2418.     IF nachfrag#=0
  2419.       PBOX 330,288,343,301
  2420.     ENDIF
  2421.     IF nachfrag#=1
  2422.       PBOX 190,288,203,301
  2423.     ENDIF
  2424.     REPEAT
  2425.       IF MOUSEX>170 AND MOUSEX<183 AND MOUSEY>146 AND MOUSEY<159 AND MOUSEK=1
  2426.         allerichtig%=1
  2427.         DEFFILL 1,2,4
  2428.         PBOX 170,146,183,159
  2429.         DEFFILL ,0,0
  2430.         PBOX 170,174,183,187
  2431.       ENDIF
  2432.       IF MOUSEX>170 AND MOUSEX<183 AND MOUSEY>174 AND MOUSEY<187 AND MOUSEK=1
  2433.         allerichtig%=2
  2434.         DEFFILL 1,2,4
  2435.         PBOX 170,174,183,187
  2436.         DEFFILL ,0,0
  2437.         PBOX 170,146,183,159
  2438.       ENDIF
  2439.       IF MOUSEX>190 AND MOUSEX<203 AND MOUSEY>288 AND MOUSEY<301 AND MOUSEK=1
  2440.         nachfrag#=1
  2441.         DEFFILL 1,2,4
  2442.         PBOX 190,288,203,301
  2443.         DEFFILL ,0,0
  2444.         PBOX 330,288,343,301
  2445.       ENDIF
  2446.       IF MOUSEX>330 AND MOUSEX<343 AND MOUSEY>288 AND MOUSEY<301 AND MOUSEK=1
  2447.         nachfrag#=0
  2448.         DEFFILL 1,2,4
  2449.         PBOX 330,288,343,301
  2450.         DEFFILL ,0,0
  2451.         PBOX 190,288,203,301
  2452.       ENDIF
  2453.     UNTIL MOUSEX>272 AND MOUSEX<352 AND MOUSEY>317 AND MOUSEY<337 AND MOUSEK=1
  2454.     GRAPHMODE 3
  2455.     DEFFILL 1,1,1
  2456.     PBOX 272,317,352,337
  2457.     PAUSE 10
  2458.     GRAPHMODE 1
  2459.     ~GRAF_SHRINKBOX(320,200,0,0,120,50,400,300)
  2460.     SPUT hi$
  2461.   ENDIF
  2462.   '
  2463.   IF MENU(5)=70
  2464.     ALERT 1,"Abbruch mit ESC",1,"Ok",dummy%
  2465.     musik#=1
  2466.     SPOKE &H484,PEEK(&H484) AND NOT 1
  2467.     ~XBIOS(32,L:musikadresse%)
  2468.   ENDIF
  2469.   '
  2470.   IF MENU(5)=71
  2471.     SGET hi$
  2472.     TITLEW #1,"Unregelmäßige englische Verben"
  2473.     OPENW #1,30,44,580,308,9
  2474.     CLS
  2475.     DEFTEXT 1,0,0,6
  2476.     FOR i#=1 TO 159 STEP 2
  2477.       IF i#=67 OR i#=135
  2478.         REPEAT
  2479.         UNTIL INKEY$=""
  2480.         REPEAT
  2481.         UNTIL LEN(INKEY$)
  2482.       ENDIF
  2483.       PRINT " ";unregel$(i#,1);TAB(14);unregel$(i#,2);TAB(24);unregel$(i#,3);TAB(36);"*";TAB(39);unregel$(i#+1,1);TAB(51);unregel$(i#+1,2);TAB(61);unregel$(i#+1,3)
  2484.     NEXT i#
  2485.     REPEAT
  2486.     UNTIL LEN(INKEY$)
  2487.     CLOSEW 1
  2488.     CLOSEW 0
  2489.     SPUT hi$
  2490.   ENDIF
  2491.   '
  2492.   IF MENU(5)=72
  2493.     ALERT 0,"           ",0," AN | AUS ",lanaus%
  2494.     IF lanaus%=2
  2495.       PRINT AT(6,24);SPC(70)
  2496.       PRINT AT(6,24);MID$(laufschrift$,73,70)
  2497.       MENU MENU(0),0
  2498.     ELSE
  2499.       PRINT AT(6,24);SPC(70)
  2500.       MENU MENU(0),1
  2501.     ENDIF
  2502.   ENDIF
  2503.   '
  2504.   IF MENU(5)=73
  2505.     IF lins#>1
  2506.       ALERT 1,"Sortieren !          ",1,"alphbet.|Fehl.Anz",a%
  2507.       IF a%=1
  2508.         ALERT 2,"Welche Bedeutung soll|alphabetisch sortiert|werden ",1,"deutsche|fremdspr",b%
  2509.         DEFMOUSE 2
  2510.         GET 215,170,425,230,hi$
  2511.         DEFFILL ,0,0
  2512.         PBOX 215,170,425,230
  2513.         BOX 223,200,417,220
  2514.         PRINT AT(30,12);"VOKABELN SORTIEREN:"
  2515.         ausw#=194/lins#
  2516.         w#=0
  2517.         DEFFILL ,2,2
  2518.         IF b%=1
  2519.           FOR i%=1 TO lins#
  2520.             FOR n%=i%+1 TO lins#
  2521.               IF UPPER$(lin1$(i%,1))>UPPER$(lin1$(n%,1))
  2522.                 SWAP lin1$(i%,1),lin1$(n%,1)
  2523.                 SWAP lin1$(i%,2),lin1$(n%,2)
  2524.                 SWAP lin1$(i%,3),lin1$(n%,3)
  2525.                 SWAP anm1$(i%),anm1$(n%)
  2526.                 SWAP lin2$(i%,1),lin2$(n%,1)
  2527.                 SWAP lin2$(i%,2),lin2$(n%,2)
  2528.                 SWAP lin2$(i%,3),lin2$(n%,3)
  2529.                 SWAP anm2$(i%),anm2$(n%)
  2530.                 SWAP status#(i%),status#(n%)
  2531.                 SWAP us#(i%),us#(n%)
  2532.               ENDIF
  2533.             NEXT n%
  2534.             w#=w#+ausw#
  2535.             PBOX 223,200,223+INT(w#),220
  2536.           NEXT i%
  2537.         ENDIF
  2538.         IF b%=2
  2539.           FOR i%=1 TO lins#
  2540.             FOR n%=i%+1 TO lins#
  2541.               IF UPPER$(lin2$(i%,1))>UPPER$(lin2$(n%,1))
  2542.                 SWAP lin1$(i%,1),lin1$(n%,1)
  2543.                 SWAP lin1$(i%,2),lin1$(n%,2)
  2544.                 SWAP lin1$(i%,3),lin1$(n%,3)
  2545.                 SWAP anm1$(i%),anm1$(n%)
  2546.                 SWAP lin2$(i%,1),lin2$(n%,1)
  2547.                 SWAP lin2$(i%,2),lin2$(n%,2)
  2548.                 SWAP lin2$(i%,3),lin2$(n%,3)
  2549.                 SWAP anm2$(i%),anm2$(n%)
  2550.                 SWAP status#(i%),status#(n%)
  2551.                 SWAP us#(i%),us#(n%)
  2552.               ENDIF
  2553.             NEXT n%
  2554.             w#=w#+ausw#
  2555.             PBOX 223,200,223+INT(w#),220
  2556.           NEXT i%
  2557.         ENDIF
  2558.         PUT 215,170,hi$
  2559.         DEFMOUSE 0
  2560.         clervok
  2561.         showvok(3)
  2562.       ENDIF
  2563.       IF a%=2
  2564.         DEFMOUSE 2
  2565.         GET 215,170,425,230,hi$
  2566.         DEFFILL ,0,0
  2567.         PBOX 215,170,425,230
  2568.         BOX 223,200,417,220
  2569.         PRINT AT(30,12);"VOKABELN SORTIEREN:"
  2570.         ausw#=194/lins#
  2571.         w#=0
  2572.         DEFFILL ,2,2
  2573.         FOR i%=1 TO lins#
  2574.           FOR n%=i%+1 TO lins#
  2575.             IF status#(i%)<status#(n%)
  2576.               SWAP lin1$(i%,1),lin1$(n%,1)
  2577.               SWAP lin1$(i%,2),lin1$(n%,2)
  2578.               SWAP lin1$(i%,3),lin1$(n%,3)
  2579.               SWAP anm1$(i%),anm1$(n%)
  2580.               SWAP lin2$(i%,1),lin2$(n%,1)
  2581.               SWAP lin2$(i%,2),lin2$(n%,2)
  2582.               SWAP lin2$(i%,3),lin2$(n%,3)
  2583.               SWAP anm2$(i%),anm2$(n%)
  2584.               SWAP status#(i%),status#(n%)
  2585.               SWAP us#(i%),us#(n%)
  2586.             ENDIF
  2587.           NEXT n%
  2588.           w#=w#+ausw#
  2589.           PBOX 223,200,223+INT(w#),220
  2590.         NEXT i%
  2591.         PUT 215,170,hi$
  2592.         DEFMOUSE 0
  2593.         clervok
  2594.         showvok(3)
  2595.       ENDIF
  2596.     ENDIF
  2597.   ENDIF
  2598.   '
  2599. weg:
  2600.   MENU OFF
  2601. RETURN
  2602. '
  2603. PROCEDURE degload(p.nm$,p.ad%,c.ad%,p.rs%)
  2604.   LOCAL buff$,b.adr%
  2605.   buff$=SPACE$(32034)
  2606.   b.adr%=VARPTR(buff$)
  2607.   BLOAD p.nm$,b.adr%
  2608.   *p.ad%=RIGHT$(buff$,32000)
  2609.   *c.ad%=MID$(buff$,3,32)
  2610.   *p.rs%=DPEEK(VARPTR(buff$))
  2611. RETURN
  2612. '
  2613. PROCEDURE clervok
  2614.   PRINT AT(14,4);SPC(4)
  2615.   PRINT AT(7,9);SPC(60)
  2616.   PRINT AT(7,10);SPC(60)
  2617.   PRINT AT(7,11);SPC(60)
  2618.   PRINT AT(7,12);SPC(60)
  2619.   PRINT AT(7,16);SPC(60)
  2620.   PRINT AT(7,17);SPC(60)
  2621.   PRINT AT(7,18);SPC(60)
  2622.   PRINT AT(7,19);SPC(60)
  2623. RETURN
  2624. PROCEDURE showvok(w%)
  2625.   PRINT AT(14,4);akt#
  2626.   IF w%=1 OR w%=3
  2627.     PRINT AT(7,9);lin1$(akt#,1)
  2628.     PRINT AT(7,10);lin1$(akt#,2)
  2629.     PRINT AT(7,11);lin1$(akt#,3)
  2630.     PRINT AT(7,12);anm1$(akt#)
  2631.   ENDIF
  2632.   IF w%=2 OR w%=3
  2633.     PRINT AT(7,16);lin2$(akt#,1)
  2634.     PRINT AT(7,17);lin2$(akt#,2)
  2635.     PRINT AT(7,18);lin2$(akt#,3)
  2636.     PRINT AT(7,19);anm2$(akt#)
  2637.   ENDIF
  2638.   PRINT AT(67,21);SPC(4)
  2639.   PRINT AT(67,21);status#(akt#)
  2640. RETURN
  2641. '
  2642. PROCEDURE spacweg(e.s$,VAR f.e$)
  2643.   LOCAL z%
  2644.   IF e.s$<>SPACE$(LEN(e.s$))
  2645.     e.s$=TRIM$(e.s$)
  2646.   ELSE
  2647.     e.s$=""
  2648.   ENDIF
  2649.   FOR z%=1 TO LEN(e.s$)
  2650.   nochma:
  2651.     IF MID$(e.s$,z%,1)=" " AND MID$(e.s$,z%+1,1)=" "
  2652.       e.s$=LEFT$(e.s$,z%-1)+MID$(e.s$,z%+1)
  2653.       GOTO nochma
  2654.     ENDIF
  2655.     IF MID$(e.s$,z%,1)="," AND MID$(e.s$,z%+1,1)=" "
  2656.       e.s$=LEFT$(e.s$,z%)+MID$(e.s$,z%+2)
  2657.       GOTO nochma
  2658.     ENDIF
  2659.     IF MID$(e.s$,z%,1)=" " AND MID$(e.s$,z%+1,1)=","
  2660.       e.s$=LEFT$(e.s$,z%-1)+MID$(e.s$,z%+1)
  2661.       GOTO nochma
  2662.     ENDIF
  2663.     IF MID$(e.s$,z%,1)="!" AND MID$(e.s$,z%+1,1)=" "
  2664.       e.s$=LEFT$(e.s$,z%)+MID$(e.s$,z%+2)
  2665.       GOTO nochma
  2666.     ENDIF
  2667.     IF MID$(e.s$,z%,1)=" " AND MID$(e.s$,z%+1,1)="!"
  2668.       e.s$=LEFT$(e.s$,z%-1)+MID$(e.s$,z%+1)
  2669.       GOTO nochma
  2670.     ENDIF
  2671.     IF MID$(e.s$,z%,1)="?" AND MID$(e.s$,z%+1,1)=" "
  2672.       e.s$=LEFT$(e.s$,z%)+MID$(e.s$,z%+2)
  2673.       GOTO nochma
  2674.     ENDIF
  2675.     IF MID$(e.s$,z%,1)=" " AND MID$(e.s$,z%+1,1)="?"
  2676.       e.s$=LEFT$(e.s$,z%-1)+MID$(e.s$,z%+1)
  2677.       GOTO nochma
  2678.     ENDIF
  2679.     IF MID$(e.s$,z%,1)=":" AND MID$(e.s$,z%+1,1)=" "
  2680.       e.s$=LEFT$(e.s$,z%)+MID$(e.s$,z%+2)
  2681.       GOTO nochma
  2682.     ENDIF
  2683.     IF MID$(e.s$,z%,1)=" " AND MID$(e.s$,z%+1,1)=":"
  2684.       e.s$=LEFT$(e.s$,z%-1)+MID$(e.s$,z%+1)
  2685.       GOTO nochma
  2686.     ENDIF
  2687.     IF MID$(e.s$,z%,1)="." AND MID$(e.s$,z%+1,1)=" "
  2688.       e.s$=LEFT$(e.s$,z%)+MID$(e.s$,z%+2)
  2689.       GOTO nochma
  2690.     ENDIF
  2691.     IF MID$(e.s$,z%,1)=" " AND MID$(e.s$,z%+1,1)="."
  2692.       e.s$=LEFT$(e.s$,z%-1)+MID$(e.s$,z%+1)
  2693.       GOTO nochma
  2694.     ENDIF
  2695.   NEXT z%
  2696.   f.e$=e.s$
  2697. RETURN
  2698. '
  2699. PROCEDURE fehl
  2700.   var#=FORM_ALERT(1,ERR$(ERR))
  2701.   CLOSE
  2702.   RESUME weg
  2703. RETURN
  2704. '
  2705. PROCEDURE diain(t.ext$,in.w%,VAR in.g$)
  2706.   LOCAL w.eite%,e.i$
  2707.   w.eite%=MAX(LEN(t.ext$),in.w%)*8+50
  2708.   GET (640-w.eite%)/2,170,(640-w.eite%)/2+w.eite%,220,hi$
  2709.   DEFFILL ,0,0
  2710.   PBOX (640-w.eite%)/2,170,(640-w.eite%)/2+w.eite%,220
  2711.   PRINT AT((79-LEN(t.ext$))/2,12);t.ext$
  2712.   PRINT AT((79-in.w%)/2,13);
  2713.   FORM INPUT in.w%,e.i$
  2714.   PUT (640-w.eite%)/2,170,hi$
  2715.   in.g$=e.i$
  2716. RETURN
  2717. '
  2718. PROCEDURE keylist
  2719.   LOCAL i%,back%
  2720.   OPEN "",#99,"CON:"
  2721.   FOR i%=0 TO 19
  2722.     defkey$=CHR$(34)+CHAR{BASEPAGE+ftastenspeicher%+i%*32}+CHR$(34)
  2723.     IF i%<10
  2724.       PRINT #99;"  F ";SPC(2-LEN(STR$(i%+1)));
  2725.       PRINT #99;i%+1;" : ";defkey$
  2726.     ELSE
  2727.       PRINT #99;" sF ";SPC(2-LEN(STR$(i%-9)));
  2728.       PRINT #99;i%-9;" : ";defkey$
  2729.     ENDIF
  2730.   NEXT i%
  2731.   CLOSE #99
  2732. RETURN
  2733. '
  2734. PROCEDURE find(f.flg%,str1$,str2$,st%,en%,f.adr_%)
  2735.   LOCAL f.b$,f.i%,f.of%,f.step%,f.spc%,f.sta%,f.buf$
  2736.   st%=MAX(2048,INT(st%/2)*2)
  2737.   en%=MAX(st%,INT(en%/2)*2)
  2738.   f.step%=MIN(en%-st%,4000)
  2739.   f.rst%=(en%-st%) MOD f.step%
  2740.   f.b$=SPACE$(f.step%)
  2741.   f.spc%=f.step%
  2742.   FOR f.i%=st% TO en% STEP f.step%
  2743.     IF (f.i%+f.step%)>en%
  2744.       f.spc%=f.rst%
  2745.     ENDIF
  2746.     BMOVE f.i%,VARPTR(f.b$),MAX(f.spc%,1)
  2747.     CLR f.sta%
  2748.     REPEAT
  2749.       f.of%=INSTR(LEFT$(f.b$,f.spc%),str1$+str2$,f.sta%)
  2750.       IF f.of%
  2751.         f.sta%=f.of%+LEN(str1$+str2$)
  2752.         f.buf$=f.buf$+MKL$(f.i%+f.of%-1)
  2753.       ENDIF
  2754.     UNTIL f.of%=0 OR (f.flg%<>0 AND f.of%>0)
  2755.     EXIT IF f.flg% AND f.of%>0
  2756.   NEXT f.i%
  2757.   *f.adr_%=f.buf$
  2758. RETURN
  2759.